Browse Source

Added godrays to pbrspheres.

Mark Sibly 7 years ago
parent
commit
3d9d7dd40e

+ 1 - 1
modules/mojo3d-loaders/tests/castle.monkey2

@@ -295,7 +295,7 @@ Class MyWindow Extends Window
 		_scene=New Scene
 		
 		_scene.AmbientLight=Color.Black
-		_scene.ClearColor=Color.Black
+		_scene.ClearColor=Color.Sky
 '		_scene.EnvColor=Color.Black
 		
 		_scene.ShadowAlpha=1

+ 8 - 1
modules/mojo3d/assets/shaders/effects/godrays.glsl

@@ -2,6 +2,7 @@
 //@renderpasses 0
 
 uniform sampler2D r_SourceBuffer;
+//uniform sampler2D r_DepthBuffer;
 uniform sampler2D r_DepthBuffer;
 
 uniform vec2 r_SourceBufferScale;
@@ -33,6 +34,8 @@ uniform float m_Density;
 
 uniform vec4 m_Color;
 
+uniform float m_Weight;
+
 void main(){
 
 	vec2 coords=v_SourceBufferCoords;
@@ -43,13 +46,17 @@ void main(){
 	
 	vec3 fragColor=vec3( 0.0 );
 	
+	vec3 color=m_Color.rgb * m_Weight;
+	
 	for( int i=0;i<m_NumSamples;++i ){
 	
 		coords+=delta;
 
 		float depth=texture2D( r_DepthBuffer,coords ).r;
 		
-		vec3 sample=(depth==1.0) ? m_Color.rgb : vec3( 0.0 );
+//		vec3 color=texture2D( r_SourceBuffer,coords ).rgb;
+		
+		vec3 sample=(depth==1.0) ? color : vec3( 0.0 );
 		
 		fragColor+=sample;
 	}

+ 7 - 10
modules/mojo3d/scene/effects/godrayseffect.monkey2

@@ -7,18 +7,19 @@ Class GodraysEffect Extends PostEffect
 
 	#rem monkeydoc Creates a new monochrome effect shader.
 	#end
-	Method New()
+	Method New( light:Light=Null )
 		
 		_shader=Shader.Open( "effects/godrays" )
 		
 		_uniforms=New UniformBlock( 3 )
 		
+		Light=light
 		NumSamples=100
 		Exposure=.0034
 		Decay=1.0
 		Density=0.84
 		Color=Color.White
-		Weight=.1
+		Weight=1
 	End
 	
 	Property Light:Light()
@@ -68,24 +69,20 @@ Class GodraysEffect Extends PostEffect
 	
 	Property Color:Color()
 		
-		Return _color
+		Return _uniforms.GetColor( "Color" )
 	
 	Setter( color:Color )
 		
-		_color=color
-		
-		_uniforms.SetColor( "Color",_color * _weight )
+		_uniforms.SetColor( "Color",color )
 	End
 	
 	Property Weight:Float()
 		
-		Return _weight
+		Return _uniforms.GetFloat( "Weight" )
 	
 	Setter( weight:Float )
 		
-		_weight=weight
-		
-		_uniforms.SetColor( "Color",_color * _weight )
+		_uniforms.SetFloat( "Weight",weight )
 	End
 	
 	Protected

+ 4 - 1
modules/mojo3d/tests/pbrspheres.monkey2

@@ -43,7 +43,10 @@ Class MyWindow Extends Window
 		'create light
 		'
 		_light=New Light
-		_light.RotateX( 60 )	'aim directional light 'downish'.
+		_light.Rotate( 54,144,0 )	'calibrated so specular highlight matches sun on sky texture!
+		
+		Local godrays:=New GodraysEffect( _light )
+		_scene.AddPostEffect( godrays )
 		
 		'create ground
 		'