From b7147ff5327104adba17494c0d68678c1855c50b Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 16 Mar 2018 11:33:03 +0000 Subject: [PATCH] Updated ShaderGen shaders --- src/osgUtil/shaders/shadergen_frag.cpp | 12 +------- src/osgUtil/shaders/shadergen_vert.cpp | 40 ++++++++++++++------------ 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/osgUtil/shaders/shadergen_frag.cpp b/src/osgUtil/shaders/shadergen_frag.cpp index 5018219f3..c28e9e3c8 100644 --- a/src/osgUtil/shaders/shadergen_frag.cpp +++ b/src/osgUtil/shaders/shadergen_frag.cpp @@ -4,16 +4,7 @@ char shadergen_frag[] = "// ShaderGen shader\n" " precision highp float;\n" "#endif\n" "\n" - "#pragma import_defines(GL_LIGHTING, GL_TEXTURE_2D, GL_FOG)\n" - "\n" - "#if defined(GL_LIGHTING)\n" - "varying vec3 normalDir;\n" - "varying vec3 lightDir;\n" - "#endif\n" - "\n" - "#if defined(GL_LIGHTING) || defined(GL_FOG)\n" - "varying vec3 viewDir;\n" - "#endif\n" + "#pragma import_defines(GL_TEXTURE_2D)\n" "\n" "varying vec4 vertexColor;\n" "\n" @@ -29,7 +20,6 @@ char shadergen_frag[] = "// ShaderGen shader\n" " color = color * texture2D(diffuseMap, gl_TexCoord[0].st);\n" "#endif\n" "\n" - "\n" " gl_FragColor = color;\n" "}\n" "\n"; diff --git a/src/osgUtil/shaders/shadergen_vert.cpp b/src/osgUtil/shaders/shadergen_vert.cpp index 08e8dfc8b..ede1afd0f 100644 --- a/src/osgUtil/shaders/shadergen_vert.cpp +++ b/src/osgUtil/shaders/shadergen_vert.cpp @@ -4,20 +4,31 @@ char shadergen_vert[] = "// ShaderGen shader\n" " precision highp float;\n" "#endif\n" "\n" - "#pragma import_defines(GL_LIGHTING, GL_TEXTURE_2D, GL_FOG)\n" + "#pragma import_defines(GL_LIGHTING, GL_TEXTURE_2D)\n" "\n" - "#if defined(GL_LIGHTING)\n" - "varying vec3 normalDir;\n" - "varying vec3 lightDir;\n" - "#endif\n" "\n" - "#if defined(GL_LIGHTING) || defined(GL_FOG)\n" - "varying vec3 viewDir;\n" + "#ifdef GL_LIGHTING\n" + "void directionalLight( int lightNum, vec3 normal, inout vec4 color )\n" + "{\n" + " vec3 n = normalize(gl_NormalMatrix * normal);\n" + "\n" + " float NdotL = dot( n, normalize(gl_LightSource[lightNum].position.xyz) );\n" + " NdotL = max( 0.0, NdotL );\n" + "\n" + " float NdotHV = dot( n, gl_LightSource[lightNum].halfVector.xyz );\n" + " NdotHV = max( 0.0, NdotHV );\n" + "\n" + " color *= gl_FrontLightModelProduct.sceneColor +\n" + " gl_FrontLightProduct[lightNum].ambient +\n" + " gl_FrontLightProduct[lightNum].diffuse * NdotL;\n" + "\n" + " if ( NdotL * NdotHV > 0.0 )\n" + " color += gl_FrontLightProduct[lightNum].specular * pow( NdotHV, gl_FrontMaterial.shininess );\n" + "}\n" "#endif\n" "\n" "varying vec4 vertexColor;\n" "\n" - "\n" "void main()\n" "{\n" " gl_Position = ftransform();\n" @@ -26,19 +37,10 @@ char shadergen_vert[] = "// ShaderGen shader\n" " gl_TexCoord[0] = gl_MultiTexCoord0;\n" "#endif\n" "\n" - "#if defined(GL_LIGHTING) || defined(GL_FOG)\n" - " viewDir = -vec3(gl_ModelViewMatrix * gl_Vertex);\n" - "#endif\n" + " vertexColor = gl_Color;\n" "\n" "#if defined(GL_LIGHTING)\n" - " normalDir = gl_NormalMatrix * gl_Normal;\n" - " vec4 lpos = gl_LightSource[0].position;\n" - " if (lpos.w == 0.0)\n" - " lightDir = lpos.xyz;\n" - " else\n" - " lightDir = lpos.xyz + viewDir;\n" + " directionalLight(0, gl_Normal, vertexColor);\n" "#endif\n" - "\n" - " vertexColor = gl_Color;\n" "}\n" "\n";