/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// @include "levelutil/shader/prog/ogl_glsl/" \ "include_stddef_ogl_glsl_vs1x0.s3d_shadercode_run" /////////////////////////////////////////////////////////////////////////////// void main(void) { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; vec4 posView = gl_ModelViewMatrix * gl_Vertex; gl_FogFragCoord = posView.z / posView.w; vec3 normalView = normalize(gl_NormalMatrix * gl_Normal); vec4 diffuseOut = gl_FrontMaterial.emission; vec4 specularOut = vec4(0); //!!! hack to detect nvidia #ifdef __GLSL_CG_DATA_TYPES for(int i = 0; i < gl_MaxLights; i++) { s3d_ColPair result; s3d_calcPointLightTerm( result, posView.xyz, normalView, gl_FrontMaterial.shininess, gl_LightSource[i], gl_FrontLightProduct[i]); diffuseOut += result.diffuse; specularOut += result.specular; } #else s3d_ColPair result; s3d_calcPointLightTerm( result, posView.xyz, normalView, gl_FrontMaterial.shininess, gl_LightSource[0], gl_FrontLightProduct[0]); diffuseOut += result.diffuse; specularOut += result.specular; s3d_calcPointLightTerm( result, posView.xyz, normalView, gl_FrontMaterial.shininess, gl_LightSource[1], gl_FrontLightProduct[1]); diffuseOut += result.diffuse; specularOut += result.specular; s3d_calcPointLightTerm( result, posView.xyz, normalView, gl_FrontMaterial.shininess, gl_LightSource[2], gl_FrontLightProduct[2]); diffuseOut += result.diffuse; specularOut += result.specular; #endif gl_FrontColor = vec4(0,1,0,0);//gl_Color; gl_TexCoord[0].x = dot(diffuseOut.xyz, vec3(0.3, 0.5, 0.2)); gl_TexCoord[0].y = 0.0; } ///////////////////////////////////////////////////////////////////////////////