diff --git a/Engine/source/environment/skyBox.cpp b/Engine/source/environment/skyBox.cpp index daadcf885..913d37168 100644 --- a/Engine/source/environment/skyBox.cpp +++ b/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. diff --git a/Engine/source/shaderGen/GLSL/shaderFeatureGLSL.cpp b/Engine/source/shaderGen/GLSL/shaderFeatureGLSL.cpp index 67b71c610..61b6681ea 100644 --- a/Engine/source/shaderGen/GLSL/shaderFeatureGLSL.cpp +++ b/Engine/source/shaderGen/GLSL/shaderFeatureGLSL.cpp @@ -1659,7 +1659,10 @@ void VertPositionGLSL::processVert( Vector &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; } diff --git a/Engine/source/shaderGen/HLSL/shaderFeatureHLSL.cpp b/Engine/source/shaderGen/HLSL/shaderFeatureHLSL.cpp index aa856d503..bdad37a4c 100644 --- a/Engine/source/shaderGen/HLSL/shaderFeatureHLSL.cpp +++ b/Engine/source/shaderGen/HLSL/shaderFeatureHLSL.cpp @@ -1691,6 +1691,11 @@ void VertPositionHLSL::processVert( Vector &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; } diff --git a/Templates/Full/game/core/scripts/client/renderManager.cs b/Templates/Full/game/core/scripts/client/renderManager.cs index 265c88508..5dc7951d8 100644 --- a/Templates/Full/game/core/scripts/client/renderManager.cs +++ b/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.