diff --git a/Effects/bowwave.eff b/Effects/bowwave.eff index 3a388555d..f0d0ebddc 100644 --- a/Effects/bowwave.eff +++ b/Effects/bowwave.eff @@ -492,7 +492,7 @@ - + /sim/rendering/shaders/water diff --git a/Effects/bumpspec.eff b/Effects/bumpspec.eff index 032f5e816..ed49fbbfb 100644 --- a/Effects/bumpspec.eff +++ b/Effects/bumpspec.eff @@ -34,7 +34,7 @@ in Aircraft/A320/Models/Effects/a320_bumpspec.eff ( or whatever, private to the 6 7 - + /sim/rendering/shaders/model diff --git a/Effects/model-combined.eff b/Effects/model-combined.eff index 7c67b4fd5..efa3be3c6 100644 --- a/Effects/model-combined.eff +++ b/Effects/model-combined.eff @@ -148,7 +148,7 @@ please see Docs/README.model-combined.eff for documentation 7 --> - + /sim/rendering/shaders/model diff --git a/Effects/model-default.eff b/Effects/model-default.eff index d2e313cf4..dea9819fc 100644 --- a/Effects/model-default.eff +++ b/Effects/model-default.eff @@ -11,6 +11,7 @@ 1 + 0 /environment/ground-visibility-m @@ -131,7 +132,75 @@ - + + + + /sim/rendering/rembrandt + + + 2.0 + + + + GL_ARB_shader_objects + GL_ARB_shading_language_100 + GL_ARB_vertex_shader + GL_ARB_fragment_shader + + + GL_EXT_gpu_shader4 + GL_ARB_texture_rg + + + + false + + material/ambient + material/diffuse + material/specular + material/emissive + material/shininess + ambient-and-diffuse + + false + true + smooth + back + + 1 + RenderBin + + + 0 + texture[0]/image + texture[0]/filter + texture[0]/wrap-s + texture[0]/wrap-t + + texture[0]/internal-format + + + modulate + + + + Shaders/deferred-gbuffer.vert + Shaders/deferred-gbuffer.frag + + + texture + sampler-2d + 0 + + + + + + /sim/rendering/shaders/generic @@ -290,7 +359,7 @@ - + true diff --git a/Effects/terrain-default.eff b/Effects/terrain-default.eff index d4f259abc..4de6ce0fa 100644 --- a/Effects/terrain-default.eff +++ b/Effects/terrain-default.eff @@ -35,6 +35,7 @@ 0 RenderBin + 0 /environment/ground-visibility-m /environment/visibility-m /environment/ground-haze-thickness-m @@ -195,6 +196,74 @@ + + + /sim/rendering/rembrandt + + + 2.0 + + + + GL_ARB_shader_objects + GL_ARB_shading_language_100 + GL_ARB_vertex_shader + GL_ARB_fragment_shader + + + GL_EXT_gpu_shader4 + GL_ARB_texture_rg + + + + false + + material/ambient + material/diffuse + material/specular + material/emissive + material/shininess + ambient-and-diffuse + + false + true + smooth + back + + 1 + RenderBin + + + 0 + texture[0]/image + texture[0]/filter + texture[0]/wrap-s + texture[0]/wrap-t + + texture[0]/internal-format + + + modulate + + + + Shaders/deferred-gbuffer.vert + Shaders/deferred-gbuffer.frag + + + texture + sampler-2d + 0 + + + + + + /sim/rendering/shaders/generic @@ -394,7 +463,7 @@ - + true diff --git a/Shaders/deferred-gbuffer.frag b/Shaders/deferred-gbuffer.frag new file mode 100644 index 000000000..5f765347a --- /dev/null +++ b/Shaders/deferred-gbuffer.frag @@ -0,0 +1,21 @@ +#extension GL_EXT_gpu_shader4 : enable +// +// attachment 0: normal.x | normal.x | normal.y | normal.y +// attachment 1: diffuse.r | diffuse.g | diffuse.b | material Id +// attachment 2: specular.l | shininess | emission.l | unused +// +varying vec3 ecNormal; +varying vec4 color; +uniform int materialID; +uniform sampler2D texture; +void main() { + float specular = dot( gl_FrontMaterial.specular.rgb, vec3( 0.3, 0.59, 0.11 ) ); + float shininess = gl_FrontMaterial.shininess; + float emission = dot( gl_FrontLightModelProduct.sceneColor.rgb, vec3( 0.3, 0.59, 0.11 ) ); + vec4 texel = texture2D(texture, gl_TexCoord[0].st); + if (texel.a * color.a < 0.1) + discard; + gl_FragData[0] = vec4( ecNormal.xy, 0.0, 1.0 ); + gl_FragData[1] = vec4( color.rgb * texel.rgb, float( materialID ) / 255.0 ); + gl_FragData[2] = vec4( specular, shininess / 255.0, emission, 1.0 ); +} diff --git a/Shaders/deferred-gbuffer.vert b/Shaders/deferred-gbuffer.vert new file mode 100644 index 000000000..b517ab146 --- /dev/null +++ b/Shaders/deferred-gbuffer.vert @@ -0,0 +1,13 @@ +// +// attachment 0: normal.x | normal.x | normal.y | normal.y +// attachment 1: diffuse.r | diffuse.g | diffuse.b | material Id +// attachment 2: specular.l | shininess | emission.l | unused +// +varying vec3 ecNormal; +varying vec4 color; +void main() { + ecNormal = gl_NormalMatrix * gl_Normal; + gl_Position = ftransform(); + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + color = gl_Color; +}