Browse Source

WIP posteffect fixes.

Mark Sibly 7 years ago
parent
commit
bbbc73fd99

+ 16 - 10
modules/mojo3d/assets/shaders/effects/godrays.glsl

@@ -2,29 +2,33 @@
 //@renderpasses 0
 
 uniform sampler2D r_SourceBuffer;
-//uniform sampler2D r_DepthBuffer;
+
 uniform sampler2D r_DepthBuffer;
 
-uniform vec2 r_SourceBufferScale;
+uniform vec2 r_BufferCoordScale;
 
-varying vec2 v_SourceBufferCoords;
+varying vec2 v_BufferCoords;
 
 //@vertex
 
-attribute vec2 a_Position;
+attribute vec4 a_Position;
 	
 void main(){
 
-	v_SourceBufferCoords=a_Position * r_SourceBufferScale;
+	v_BufferCoords=a_Position.xy * r_BufferCoordScale;
 
-	gl_Position=vec4( a_Position * 2.0 - 1.0,-1.0,1.0 );
+	gl_Position=vec4( a_Position.xy * 2.0 - 1.0,0.0,1.0 );
 }
 
 //@fragment
 
 uniform vec2 m_LightPosBufferCoords;
 
+#ifdef GL_ES
+const int m_NumSamples=100;
+#else
 uniform int m_NumSamples;
+#endif
 
 uniform float m_Exposure;
 
@@ -38,7 +42,7 @@ uniform float m_Weight;
 
 void main(){
 
-	vec2 coords=v_SourceBufferCoords;
+	vec2 coords=v_BufferCoords;
 
 	vec2 delta=m_LightPosBufferCoords-coords;
 	
@@ -54,12 +58,14 @@ void main(){
 
 		float depth=texture2D( r_DepthBuffer,coords ).r;
 		
-//		vec3 color=texture2D( r_SourceBuffer,coords ).rgb;
-		
 		vec3 sample=(depth==1.0) ? color : vec3( 0.0 );
 		
 		fragColor+=sample;
 	}
+
+	float depth=texture2D( r_DepthBuffer,v_BufferCoords * r_BufferCoordScale ).r;
 	
-	gl_FragColor=vec4( fragColor*m_Exposure,1.0 );
+//	gl_FragColor=vec4( v_SourceBufferCoords,0.0,1.0 );//fragColor*m_Exposure,1.0 );
+
+	gl_FragColor=vec4( depth,0.0,0.0,1.0 );//fragColor*m_Exposure,1.0 );
 }

+ 5 - 1
modules/mojo3d/scene/effects/godrayseffect.monkey2

@@ -104,7 +104,11 @@ Class GodraysEffect Extends PostEffect
 		
 		Local lightPos:=lightClipPos.XY/lightClipPos.w * 0.5 + 0.5		'NDC
 		
-		lightPos*=SourceBufferScale	'buffer
+		Local bcscale:=Uniforms.GetVec2f( "BufferCoordScale" )
+		
+'		Print "SourceBufferSize="+SourceBufferSize+" SourceBufferScale="+SourceBufferScale
+		
+		lightPos*=bcscale
 		
 		'set effect uniforms
 		_uniforms.SetVec2f( "LightPosBufferCoords",lightPos )

+ 5 - 6
modules/mojo3d/scene/posteffect.monkey2

@@ -24,6 +24,8 @@ Class PostEffect
 	#end	
 	Method Render()
 		
+		UpdateSourceUniforms()
+		
 		OnRender( _gdevice.RenderTarget,_gdevice.Viewport )
 	End
 	
@@ -31,8 +33,6 @@ Class PostEffect
 
 		_gdevice=gdevice
 		_runiforms=runiforms
-		
-		UpdateSourceBuffer()
 	End
 	
 	Function EndRendering()
@@ -76,8 +76,9 @@ Class PostEffect
 	
 	Method SetRenderTarget( target:RenderTarget,viewport:Recti )
 		
-		_gdevice.RenderTarget=target
+		UpdateSourceUniforms()
 		
+		_gdevice.RenderTarget=target
 		_gdevice.Viewport=viewport
 	End
 	
@@ -96,8 +97,6 @@ Class PostEffect
 		_gdevice.VertexBuffer=_vertices
 		
 		_gdevice.Render( 4,1 )
-		
-		UpdateSourceBuffer()
 	End
 	
 	#rem monkeydoc @hidden
@@ -111,7 +110,7 @@ Class PostEffect
 	
 	Field _enabled:Bool=True
 	
-	function UpdateSourceBuffer()
+	Function UpdateSourceUniforms()
 
 		Local rsize:=_gdevice.Viewport.Size
 		Local rtarget:=_gdevice.RenderTarget