/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### 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" /////////////////////////////////////////////////////////////////////////////// S3D_BONE_DECL_STD(boneWgh, boneSubscr) S3D_MATBONE_DECL_STD(matBone) /////////////////////////////////////////////////////////////////////////////// void main(void) { S3D_BONE_TRANSF_STD(matBoneFinal, matBone, boneWgh, boneSubscr); vec4 posView = matBoneFinal * gl_Vertex; vec3 normalView = normalize((matBoneFinal * vec4(gl_Normal, 0.0)).xyz); gl_Position = gl_ProjectionMatrix * posView; // gl_FogFragCoord = posView.z / posView.w; 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 = diffuseOut; gl_FrontSecondaryColor = specularOut; gl_TexCoord[0] = gl_MultiTexCoord0; gl_TexCoord[1] = gl_MultiTexCoord1; } ///////////////////////////////////////////////////////////////////////////////