|
@@ -235,17 +235,32 @@ When a new renderer is created, the config setting `MOJO3D\_RENDERER` can be use
|
|
_gdevice.Shader=_deferredLightingShader
|
|
_gdevice.Shader=_deferredLightingShader
|
|
_gdevice.CullMode=CullMode.None
|
|
_gdevice.CullMode=CullMode.None
|
|
|
|
|
|
- _gdevice.RenderTarget=_renderTarget1
|
|
|
|
-
|
|
|
|
_runiforms.SetMat4f( "InverseProjectionMatrix",_invProjMatrix )
|
|
_runiforms.SetMat4f( "InverseProjectionMatrix",_invProjMatrix )
|
|
|
|
|
|
RenderQuad()
|
|
RenderQuad()
|
|
|
|
+ End
|
|
|
|
+
|
|
|
|
+ Method RenderDeferredFog()
|
|
|
|
|
|
- _gdevice.RenderTarget=_renderTarget0
|
|
|
|
|
|
+ If _scene.FogColor.a=0 Return
|
|
|
|
+
|
|
|
|
+ _gdevice.ColorMask=ColorMask.All
|
|
|
|
+ _gdevice.DepthMask=False
|
|
|
|
+ _gdevice.DepthFunc=DepthFunc.Always
|
|
|
|
+ _gdevice.BlendMode=BlendMode.Alpha
|
|
|
|
+ _gdevice.RenderPass=0
|
|
|
|
+
|
|
|
|
+ _gdevice.Shader=_deferredFogShader
|
|
|
|
+ _gdevice.CullMode=CullMode.None
|
|
|
|
+
|
|
|
|
+ RenderQuad()
|
|
End
|
|
End
|
|
|
|
|
|
Method RenderOpaqueDeferred()
|
|
Method RenderOpaqueDeferred()
|
|
|
|
|
|
|
|
+ 'write to all deferred buffers
|
|
|
|
+ _gdevice.RenderTarget=_renderTarget0
|
|
|
|
+
|
|
_gdevice.ColorMask=ColorMask.All
|
|
_gdevice.ColorMask=ColorMask.All
|
|
_gdevice.DepthMask=True
|
|
_gdevice.DepthMask=True
|
|
_gdevice.DepthFunc=DepthFunc.LessEqual
|
|
_gdevice.DepthFunc=DepthFunc.LessEqual
|
|
@@ -254,11 +269,15 @@ When a new renderer is created, the config setting `MOJO3D\_RENDERER` can be use
|
|
|
|
|
|
RenderOpaqueOps()
|
|
RenderOpaqueOps()
|
|
|
|
|
|
|
|
+ 'only write to accum buffer only from now on...
|
|
|
|
+ _gdevice.RenderTarget=_renderTarget1
|
|
|
|
+
|
|
For Local light:=Eachin _scene.Lights
|
|
For Local light:=Eachin _scene.Lights
|
|
|
|
|
|
RenderDeferredLighting( light )
|
|
RenderDeferredLighting( light )
|
|
Next
|
|
Next
|
|
|
|
|
|
|
|
+ RenderDeferredFog()
|
|
End
|
|
End
|
|
|
|
|
|
Method RenderOpaqueForward()
|
|
Method RenderOpaqueForward()
|
|
@@ -315,30 +334,10 @@ When a new renderer is created, the config setting `MOJO3D\_RENDERER` can be use
|
|
|
|
|
|
End
|
|
End
|
|
|
|
|
|
- Method RenderDeferredFog()
|
|
|
|
-
|
|
|
|
- If _scene.FogColor.a=0 Return
|
|
|
|
-
|
|
|
|
- _gdevice.ColorMask=ColorMask.All
|
|
|
|
- _gdevice.DepthMask=False
|
|
|
|
- _gdevice.DepthFunc=DepthFunc.Always
|
|
|
|
- _gdevice.BlendMode=BlendMode.Alpha
|
|
|
|
- _gdevice.RenderPass=0
|
|
|
|
-
|
|
|
|
- _gdevice.RenderTarget=_renderTarget1
|
|
|
|
- _gdevice.Shader=_deferredFogShader
|
|
|
|
- _gdevice.CullMode=CullMode.None
|
|
|
|
-
|
|
|
|
- RenderQuad()
|
|
|
|
-
|
|
|
|
- _gdevice.RenderTarget=_renderTarget0
|
|
|
|
- End
|
|
|
|
-
|
|
|
|
Method RenderOpaque()
|
|
Method RenderOpaque()
|
|
|
|
|
|
If _deferred
|
|
If _deferred
|
|
RenderOpaqueDeferred()
|
|
RenderOpaqueDeferred()
|
|
- RenderDeferredFog()
|
|
|
|
Else
|
|
Else
|
|
RenderOpaqueForward()
|
|
RenderOpaqueForward()
|
|
Endif
|
|
Endif
|