From 783b308990e7c4ef0837a102a138778f73e4d2b7 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 15 Feb 2015 15:23:19 -0500 Subject: Added bloom! --- shaders/final.fragment | 50 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) (limited to 'shaders/final.fragment') diff --git a/shaders/final.fragment b/shaders/final.fragment index c900973..5feccb9 100644 --- a/shaders/final.fragment +++ b/shaders/final.fragment @@ -1,7 +1,10 @@ #version 330 core in vec2 UV; -in vec3 norm; +in vec3 normIn; +in vec3 camDirIn; +in vec3 lightDirIn; +//in vec3 vertPos; out vec3 color; @@ -10,20 +13,19 @@ uniform sampler2D scanlinestex; const vec2 UVScalar = vec2(1.0, 1.0); const vec2 UVOffset = vec2(0.0, 0.0); -const vec2 CRTMask_Scale = vec2(85.0, 153.6); +const vec2 CRTMask_Scale = vec2(85.0, 153.6)*4.0; const vec2 CRTMask_Offset = vec2(0.0, 0.0); const float Tuning_Overscan = 1.0; -const float Tuning_Dimming = 0.5; +const float Tuning_Dimming = 0.0; const float Tuning_Satur = 1.35; const float Tuning_ReflScalar = 0.3; -const float Tuning_Barrel = 0.12; -const float Tuning_Scanline_Brightness = 0.25; +const float Tuning_Barrel = 0; //0.12; +const float Tuning_Scanline_Brightness = 0.5; const float Tuning_Scanline_Opacity = 0.5; const float Tuning_Diff_Brightness = 0.5; const float Tuning_Spec_Brightness = 0.35; const float Tuning_Spec_Power = 50.0; const float Tuning_Fres_Brightness = 1.0; -const vec3 Tuning_LightPos = vec3(5.0, -10.0, 0.0); vec4 sampleCRT(vec2 uv) { @@ -52,5 +54,39 @@ vec4 sampleCRT(vec2 uv) void main() { - color = sampleCRT(UV).rgb; + vec3 norm = normalize(normIn); + vec3 camDir = normalize(camDirIn); + vec3 lightDir = normalize(lightDirIn); + //vec3 refl = reflect(camDir, normIn); + + float diffuse = clamp(dot(norm, lightDir), 0.0f, 1.0f); + vec4 colordiff = vec4(0.175, 0.15, 0.2, 1) * diffuse * Tuning_Diff_Brightness; + + vec3 halfVec = normalize(lightDir + camDir); + float spec = clamp(dot(norm, halfVec), 0.0f, 1.0f); + spec = pow(spec, Tuning_Spec_Power); + vec4 colorspec = vec4(0.25, 0.25, 0.25, 1) * spec * Tuning_Spec_Brightness; + + float fres = 1.0f - dot(camDir, norm); + fres = (fres*fres) * Tuning_Fres_Brightness; + vec4 colorfres = vec4(0.45, 0.4, 0.5, 1) * fres;/* + + float lambertian = max(dot(camDirNorm,norm),0.0); + vec4 colorspec = vec4(0.0); + vec4 colorfres = vec4(0.0); + vec4 colordiff = vec4(0.175,0.15,0.2,1) * lambertian * Tuning_Diff_Brightness; + if (lambertian > 0.0) + { + vec3 viewDir = normalize(-vertPos); + vec3 halfDir = normalize(camDirNorm + viewDir); + float specAngle = max(dot(halfDir, normnorm), 0.0); + colorspec = vec4(0.25,0.25,0.25,1) * pow(specAngle, Tuning_Spec_Power) * Tuning_Spec_Brightness; + }*/ + + vec4 emissive = sampleCRT(UV); + + vec4 nearfinal = colorfres + colordiff + colorspec + emissive; + vec4 final = nearfinal * mix(vec4(1,1,1,1), vec4(0,0,0,0), Tuning_Dimming); + + color = final.rgb; } -- cgit 1.4.1