Skip to content

Commit 307cbe1

Browse files
committed
New Mesh Shader
1 parent 9a1b252 commit 307cbe1

4 files changed

Lines changed: 142 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
module.exports = [
2+
'#define SHADER_NAME PHASER_MESH_FS',
3+
'',
4+
'precision mediump float;',
5+
'',
6+
'uniform vec3 uLightPosition;',
7+
'uniform vec3 uLightAmbient;',
8+
'uniform vec3 uLightDiffuse;',
9+
'uniform vec3 uLightSpecular;',
10+
'',
11+
'uniform vec3 uMaterialAmbient;',
12+
'uniform vec3 uMaterialDiffuse;',
13+
'uniform vec3 uMaterialSpecular;',
14+
'uniform float uMaterialShine;',
15+
'',
16+
'uniform vec3 uCameraPosition;',
17+
'',
18+
'uniform sampler2D uTexture;',
19+
'',
20+
'varying vec2 vTextureCoord;',
21+
'varying vec3 vNormal;',
22+
'varying vec3 vPosition;',
23+
'',
24+
'void main (void)',
25+
'{',
26+
' vec4 color = texture2D(uTexture, vTextureCoord);',
27+
'',
28+
' vec3 ambient = uLightAmbient * uMaterialAmbient;',
29+
'',
30+
' vec3 norm = normalize(vNormal);',
31+
' vec3 lightDir = normalize(uLightPosition - vPosition);',
32+
' float diff = max(dot(norm, lightDir), 0.0);',
33+
' vec3 diffuse = uLightDiffuse * (diff * uMaterialDiffuse);',
34+
'',
35+
' vec3 viewDir = normalize(uCameraPosition - vPosition);',
36+
' vec3 reflectDir = reflect(-lightDir, norm);',
37+
' float spec = pow(max(dot(viewDir, reflectDir), 0.0), uMaterialShine);',
38+
' vec3 specular = uLightSpecular * (spec * uMaterialSpecular);',
39+
'',
40+
' vec3 result = (ambient + diffuse + specular) * color.rgb;',
41+
'',
42+
' gl_FragColor = vec4(result, color.a);',
43+
'}',
44+
''
45+
].join('\n');
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
module.exports = [
2+
'#define SHADER_NAME PHASER_MESH_VS',
3+
'',
4+
'precision mediump float;',
5+
'',
6+
'attribute vec3 aVertexPosition;',
7+
'attribute vec3 aVertexNormal;',
8+
'attribute vec2 aTextureCoord;',
9+
'',
10+
'uniform mat4 uViewProjectionMatrix;',
11+
'uniform mat4 uModelMatrix;',
12+
'uniform mat4 uNormalMatrix;',
13+
'',
14+
'varying vec2 vTextureCoord;',
15+
'varying vec3 vNormal;',
16+
'varying vec3 vPosition;',
17+
'',
18+
'void main ()',
19+
'{',
20+
' vTextureCoord = aTextureCoord;',
21+
'',
22+
' vPosition = vec3(uModelMatrix * vec4(aVertexPosition, 1.0));',
23+
'',
24+
' vNormal = vec3(uNormalMatrix * vec4(aVertexNormal, 1.0));',
25+
'',
26+
' gl_Position = uViewProjectionMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);',
27+
'}',
28+
''
29+
].join('\n');
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#define SHADER_NAME PHASER_MESH_FS
2+
3+
precision mediump float;
4+
5+
uniform vec3 uLightPosition;
6+
uniform vec3 uLightAmbient;
7+
uniform vec3 uLightDiffuse;
8+
uniform vec3 uLightSpecular;
9+
10+
uniform vec3 uMaterialAmbient;
11+
uniform vec3 uMaterialDiffuse;
12+
uniform vec3 uMaterialSpecular;
13+
uniform float uMaterialShine;
14+
15+
uniform vec3 uCameraPosition;
16+
17+
uniform sampler2D uTexture;
18+
19+
varying vec2 vTextureCoord;
20+
varying vec3 vNormal;
21+
varying vec3 vPosition;
22+
23+
void main (void)
24+
{
25+
vec4 color = texture2D(uTexture, vTextureCoord);
26+
27+
vec3 ambient = uLightAmbient * uMaterialAmbient;
28+
29+
vec3 norm = normalize(vNormal);
30+
vec3 lightDir = normalize(uLightPosition - vPosition);
31+
float diff = max(dot(norm, lightDir), 0.0);
32+
vec3 diffuse = uLightDiffuse * (diff * uMaterialDiffuse);
33+
34+
vec3 viewDir = normalize(uCameraPosition - vPosition);
35+
vec3 reflectDir = reflect(-lightDir, norm);
36+
float spec = pow(max(dot(viewDir, reflectDir), 0.0), uMaterialShine);
37+
vec3 specular = uLightSpecular * (spec * uMaterialSpecular);
38+
39+
vec3 result = (ambient + diffuse + specular) * color.rgb;
40+
41+
gl_FragColor = vec4(result, color.a);
42+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#define SHADER_NAME PHASER_MESH_VS
2+
3+
precision mediump float;
4+
5+
attribute vec3 aVertexPosition;
6+
attribute vec3 aVertexNormal;
7+
attribute vec2 aTextureCoord;
8+
9+
uniform mat4 uViewProjectionMatrix;
10+
uniform mat4 uModelMatrix;
11+
uniform mat4 uNormalMatrix;
12+
13+
varying vec2 vTextureCoord;
14+
varying vec3 vNormal;
15+
varying vec3 vPosition;
16+
17+
void main ()
18+
{
19+
vTextureCoord = aTextureCoord;
20+
21+
vPosition = vec3(uModelMatrix * vec4(aVertexPosition, 1.0));
22+
23+
vNormal = vec3(uNormalMatrix * vec4(aVertexNormal, 1.0));
24+
25+
gl_Position = uViewProjectionMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);
26+
}

0 commit comments

Comments
 (0)