Browse Source

Kludges for bizarro angle/d3d bug.

Mark Sibly 7 years ago
parent
commit
fb89f0a1ae

+ 2 - 7
modules/mojo3d/assets/shaders/imports/pbr.glsl

@@ -7,10 +7,9 @@
 
 
 float pointAtten( float d,float r ){
 float pointAtten( float d,float r ){
 
 
-//	Doesn't work on ANGLE!
-//	float atten=1.0-min( (d*d)/(r*r),1.0 );atten*=atten;
+	float atten=1.0-min( (d*d)/(r*r),1.0 );atten*=atten;
 
 
-	float atten=1.0-min( d/r,1.0 );atten*=atten;
+//	float atten=1.0-min( d/r,1.0 );atten*=atten;
 	
 	
 //	float atten=1.0/(1.0+d*d);
 //	float atten=1.0/(1.0+d*d);
 
 
@@ -38,10 +37,6 @@ void emitPbrFragment( vec3 color,float metalness,float roughness,vec3 position,v
 
 
 	float atten=pointAtten( length( lvec ),r_LightRange );
 	float atten=pointAtten( length( lvec ),r_LightRange );
 	
 	
-#ifdef GL_ES
-	if( atten!=atten ) return;
-#endif
-	
 	lvec=normalize( lvec );
 	lvec=normalize( lvec );
 	
 	
 #elif MX2_SPOTLIGHT
 #elif MX2_SPOTLIGHT

+ 8 - 8
modules/mojo3d/assets/shaders/imports/std.glsl

@@ -156,22 +156,22 @@ attribute vec4 a_Bones;		//mask=128
 
 
 void transformLightQuadVertex(){
 void transformLightQuadVertex(){
 
 
-	vec2 qposition=a_Position.xy * r_QuadCoordScale + r_QuadCoordTrans;
+	//Careful! Bizarro angle/d3d bug...
 
 
-	v_ClipPosition=qposition * 2.0 - 1.0;
+	v_ClipPosition=a_Position.xy * r_QuadCoordScale + r_QuadCoordTrans;
 	
 	
-	v_BufferCoords=qposition * r_BufferCoordScale;
+	v_BufferCoords=v_ClipPosition * r_BufferCoordScale;
 	
 	
-	gl_Position=vec4( v_ClipPosition,-1.0,1.0 );
+	gl_Position=vec4( v_ClipPosition * 2.0 - 1.0,-1.0,1.0 );
 }
 }
 
 
 void transformQuadVertex(){
 void transformQuadVertex(){
 
 
-	v_ClipPosition=a_Position.xy * 2.0 - 1.0;
+	v_ClipPosition=a_Position.xy;
 	
 	
-	v_BufferCoords=a_Position.xy * r_BufferCoordScale;
+	v_BufferCoords=v_ClipPosition.xy * r_BufferCoordScale;
 	
 	
-	gl_Position=vec4( v_ClipPosition,-1.0,1.0 );
+	gl_Position=vec4( v_ClipPosition.xy * 2.0 - 1.0,-1.0,1.0 );
 }
 }
 
 
 void transformSpriteVertex(){
 void transformSpriteVertex(){
@@ -276,7 +276,7 @@ vec3 fragmentPosition(){
 
 
 	float depth=viewDepth( texture2D( r_DepthBuffer,v_BufferCoords ).r );
 	float depth=viewDepth( texture2D( r_DepthBuffer,v_BufferCoords ).r );
 
 
-	vec4 vpos4=r_InverseProjectionMatrix * vec4( v_ClipPosition,-1.0,1.0 );
+	vec4 vpos4=r_InverseProjectionMatrix * vec4( v_ClipPosition*2.0-1.0,-1.0,1.0 );
 	
 	
 	vec3 vpos=vpos4.xyz/vpos4.w;
 	vec3 vpos=vpos4.xyz/vpos4.w;