Files
OpenSceneGraph/src/osgUtil/shaders/shadergen_vert.cpp
2018-03-16 11:33:03 +00:00

47 lines
2.3 KiB
C++

char shadergen_vert[] = "// ShaderGen shader\n"
"// new version\n"
"#ifdef GL_ES\n"
" precision highp float;\n"
"#endif\n"
"\n"
"#pragma import_defines(GL_LIGHTING, GL_TEXTURE_2D)\n"
"\n"
"\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"
"void main()\n"
"{\n"
" gl_Position = ftransform();\n"
"\n"
"#if defined(GL_TEXTURE_2D)\n"
" gl_TexCoord[0] = gl_MultiTexCoord0;\n"
"#endif\n"
"\n"
" vertexColor = gl_Color;\n"
"\n"
"#if defined(GL_LIGHTING)\n"
" directionalLight(0, gl_Normal, vertexColor);\n"
"#endif\n"
"}\n"
"\n";