54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| /* Attributes */
 | |
| 
 | |
| attribute vec3 inVertexPosition;
 | |
| attribute vec3 inVertexNormal;
 | |
| attribute vec4 inVertexColor;
 | |
| attribute vec2 inTexCoord0;
 | |
| attribute vec2 inTexCoord1;
 | |
| 
 | |
| /* Uniforms */
 | |
| 
 | |
| uniform mat4 uWVPMatrix;
 | |
| uniform mat4 uWVMatrix;
 | |
| uniform mat4 uNMatrix;
 | |
| uniform mat4 uTMatrix0;
 | |
| 
 | |
| uniform vec4 uGlobalAmbient;
 | |
| uniform vec4 uMaterialAmbient;
 | |
| uniform vec4 uMaterialDiffuse;
 | |
| uniform vec4 uMaterialEmissive;
 | |
| uniform vec4 uMaterialSpecular;
 | |
| uniform float uMaterialShininess;
 | |
| 
 | |
| uniform float uThickness;
 | |
| 
 | |
| /* Varyings */
 | |
| 
 | |
| varying vec2 vTextureCoord0;
 | |
| varying vec2 vTextureCoord1;
 | |
| varying vec4 vVertexColor;
 | |
| varying vec4 vSpecularColor;
 | |
| varying float vFogCoord;
 | |
| 
 | |
| void main()
 | |
| {
 | |
| 	gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
 | |
| 	gl_PointSize = uThickness;
 | |
| 
 | |
| 	vec4 TextureCoord0 = vec4(inTexCoord0.x, inTexCoord0.y, 1.0, 1.0);
 | |
| 	vTextureCoord0 = vec4(uTMatrix0 * TextureCoord0).xy;
 | |
| 
 | |
| 	vec3 Position = (uWVMatrix * vec4(inVertexPosition, 1.0)).xyz;
 | |
| 	vec3 P = normalize(Position);
 | |
| 	vec3 N = normalize(vec4(uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
 | |
| 	vec3 R = reflect(P, N);
 | |
| 
 | |
| 	float V = 2.0 * sqrt(R.x*R.x + R.y*R.y + (R.z+1.0)*(R.z+1.0));
 | |
| 	vTextureCoord1 = vec2(R.x/V + 0.5, R.y/V + 0.5);
 | |
| 
 | |
| 	vVertexColor = inVertexColor.bgra;
 | |
| 	vSpecularColor = vec4(0.0, 0.0, 0.0, 0.0);
 | |
| 
 | |
| 	vFogCoord = length(Position);
 | |
| }
 |