mirror of
https://github.com/photonstorm/phaser
synced 2025-01-10 04:08:50 +00:00
54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
module.exports = [
|
|
'#define SHADER_NAME PHASER_MESH_FS',
|
|
'',
|
|
'precision mediump float;',
|
|
'',
|
|
'uniform vec3 uLightPosition;',
|
|
'uniform vec3 uLightAmbient;',
|
|
'uniform vec3 uLightDiffuse;',
|
|
'uniform vec3 uLightSpecular;',
|
|
'',
|
|
'uniform vec3 uFogColor;',
|
|
'uniform float uFogNear;',
|
|
'uniform float uFogFar;',
|
|
'',
|
|
'uniform vec3 uMaterialAmbient;',
|
|
'uniform vec3 uMaterialDiffuse;',
|
|
'uniform vec3 uMaterialSpecular;',
|
|
'uniform float uMaterialShine;',
|
|
'',
|
|
'uniform vec3 uCameraPosition;',
|
|
'',
|
|
'uniform sampler2D uTexture;',
|
|
'',
|
|
'varying vec2 vTextureCoord;',
|
|
'varying vec3 vNormal;',
|
|
'varying vec3 vPosition;',
|
|
'',
|
|
'void main (void)',
|
|
'{',
|
|
' vec4 color = texture2D(uTexture, vTextureCoord);',
|
|
'',
|
|
' vec3 ambient = uLightAmbient * uMaterialAmbient;',
|
|
'',
|
|
' vec3 norm = normalize(vNormal);',
|
|
' vec3 lightDir = normalize(uLightPosition - vPosition);',
|
|
' float diff = max(dot(norm, lightDir), 0.0);',
|
|
' vec3 diffuse = uLightDiffuse * (diff * uMaterialDiffuse);',
|
|
'',
|
|
' vec3 viewDir = normalize(uCameraPosition - vPosition);',
|
|
' vec3 reflectDir = reflect(-lightDir, norm);',
|
|
' float spec = pow(max(dot(viewDir, reflectDir), 0.0), uMaterialShine);',
|
|
' vec3 specular = uLightSpecular * (spec * uMaterialSpecular);',
|
|
'',
|
|
' vec3 result = (ambient + diffuse + specular) * color.rgb;',
|
|
'',
|
|
' float depth = gl_FragCoord.z / gl_FragCoord.w;',
|
|
'',
|
|
' float fogFactor = smoothstep(uFogNear, uFogFar, depth);',
|
|
'',
|
|
' gl_FragColor.rgb = mix(result.rgb, uFogColor, fogFactor);',
|
|
' gl_FragColor.a = color.a;',
|
|
'}',
|
|
''
|
|
].join('\n');
|