Browse Source

from @rextimmy: shifts sybox rendering to last (kils a bit of overdraw)

Azaezel 6 years ago
parent
commit
518bcaaabf

+ 1 - 0
Engine/source/environment/skyBox.cpp

@@ -602,6 +602,7 @@ void SkyBox::_initMaterial()
    desc.setCullMode( GFXCullNone );
    desc.setBlend( true );
    desc.setZReadWrite( true, false );
+   desc.zFunc = GFXCmpLessEqual;
    mMatInstance->addStateBlockDesc( desc );
 
    // Also disable lighting on the skybox material by default.

+ 4 - 1
Engine/source/shaderGen/GLSL/shaderFeatureGLSL.cpp

@@ -1659,7 +1659,10 @@ void VertPositionGLSL::processVert( Vector<ShaderComponent*> &componentList,
    
    meta->addStatement( new GenOp( "   @ = tMul(@, vec4(@.xyz,1));\r\n", 
        outPosition, modelview, inPosition ) );   
-   
+   if (fd.materialFeatures[MFT_SkyBox])
+   {
+	   meta->addStatement(new GenOp("   @ = @.xyww;\r\n", outPosition, outPosition));
+   }
 	output = meta;
 }
 

+ 5 - 0
Engine/source/shaderGen/HLSL/shaderFeatureHLSL.cpp

@@ -1691,6 +1691,11 @@ void VertPositionHLSL::processVert( Vector<ShaderComponent*> &componentList,
    meta->addStatement( new GenOp( "   @ = mul(@, float4(@.xyz,1));\r\n", 
       outPosition, modelview, inPosition ) );
 
+   if (fd.materialFeatures[MFT_SkyBox])
+   {
+      meta->addStatement(new GenOp("   @ = @.xyww;\r\n", outPosition, outPosition));
+   }
+
    output = meta;
 }
 

+ 4 - 6
Templates/Full/game/core/scripts/client/renderManager.cs

@@ -45,12 +45,8 @@ function initRenderManager()
       // provided in $inTex
       resolveEffect = "AL_FormatCopy";
    };
-   DiffuseRenderPassManager.addManager( new RenderPassStateBin() { renderOrder = 0.001; stateToken = AL_FormatToken; } );
-     
-   // We really need to fix the sky to render after all the 
-   // meshes... but that causes issues in reflections.
-   DiffuseRenderPassManager.addManager( new RenderObjectMgr(SkyBin) { bintype = "Sky"; renderOrder = 0.015; processAddOrder = 0.015; } );
-   
+   DiffuseRenderPassManager.addManager( new RenderPassStateBin() { renderOrder = 0.001; stateToken = AL_FormatToken; } );     
+  
    DiffuseRenderPassManager.addManager( new RenderProbeMgr(ProbeBin)       { bintype = "Probes"; renderOrder = 0.019; processAddOrder = 0.02; } );
    //DiffuseRenderPassManager.addManager( new RenderVistaMgr()             { bintype = "Vista"; renderOrder = 0.15; processAddOrder = 0.15; } );
    
@@ -81,6 +77,8 @@ function initRenderManager()
    
    // Note that the GlowPostFx is triggered after this bin.
    DiffuseRenderPassManager.addManager( new RenderGlowMgr(GlowBin) { renderOrder = 1.5; processAddOrder = 1.5; } );
+   // Render the sky last
+   DiffuseRenderPassManager.addManager( new RenderObjectMgr(SkyBin) { bintype = "Sky"; renderOrder = 1.55; processAddOrder = 1.55; } );
    
    // We render any editor stuff from this bin.  Note that the HDR is
    // completed before this bin to keep editor elements from tone mapping.