Merge branch 'notSoEmpty' of https://github.com/Azaezel/Torque3D into development

This commit is contained in:
Areloch 2016-05-10 11:04:55 -05:00
commit c5ec4414f3
16 changed files with 285 additions and 254 deletions

View file

@ -73,7 +73,9 @@ $pref::Video::disableCubemapping = false;
///
$pref::Video::disableParallaxMapping = false;
$pref::Video::Gamma = 1.0;
$pref::Video::Gamma = 2.2;
$pref::Video::Contrast = 1.0;
$pref::Video::Brightness = 0;
// Console-friendly defaults
if($platform $= "xenon")

View file

@ -0,0 +1,147 @@
singleton ShaderData( ClearGBufferShader )
{
DXVertexShaderFile = "shaders/common/lighting/advanced/deferredClearGBufferV.hlsl";
DXPixelShaderFile = "shaders/common/lighting/advanced/deferredClearGBufferP.hlsl";
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/deferredClearGBufferP.glsl";
pixVersion = 2.0;
};
singleton ShaderData( DeferredColorShader )
{
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
DXPixelShaderFile = "shaders/common/lighting/advanced/deferredColorShaderP.hlsl";
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/deferredColorShaderP.glsl";
pixVersion = 2.0;
};
// Primary Deferred Shader
new GFXStateBlockData( AL_DeferredShadingState : PFX_DefaultStateBlock )
{
cullMode = GFXCullNone;
blendDefined = true;
blendEnable = true;
blendSrc = GFXBlendSrcAlpha;
blendDest = GFXBlendInvSrcAlpha;
samplersDefined = true;
samplerStates[0] = SamplerWrapLinear;
samplerStates[1] = SamplerWrapLinear;
samplerStates[2] = SamplerWrapLinear;
samplerStates[3] = SamplerWrapLinear;
};
new ShaderData( AL_DeferredShader )
{
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
DXPixelShaderFile = "shaders/common/lighting/advanced/deferredShadingP.hlsl";
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/deferredShadingP.glsl";
samplerNames[0] = "colorBufferTex";
samplerNames[1] = "lightPrePassTex";
samplerNames[2] = "matInfoTex";
samplerNames[3] = "prepassTex";
pixVersion = 2.0;
};
singleton PostEffect( AL_DeferredShading )
{
renderTime = "PFXBeforeBin";
renderBin = "SkyBin";
shader = AL_DeferredShader;
stateBlock = AL_DeferredShadingState;
texture[0] = "#color";
texture[1] = "#lightinfo";
texture[2] = "#matinfo";
texture[3] = "#prepass";
target = "$backBuffer";
renderPriority = 10000;
allowReflectPass = true;
};
// Debug Shaders.
new ShaderData( AL_ColorBufferShader )
{
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
DXPixelShaderFile = "shaders/common/lighting/advanced/dbgColorBufferP.hlsl";
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/dbgColorBufferP.glsl";
samplerNames[0] = "colorBufferTex";
pixVersion = 2.0;
};
singleton PostEffect( AL_ColorBufferVisualize )
{
shader = AL_ColorBufferShader;
stateBlock = AL_DefaultVisualizeState;
texture[0] = "#color";
target = "$backBuffer";
renderPriority = 9999;
};
/// Toggles the visualization of the AL lighting specular power buffer.
function toggleColorBufferViz( %enable )
{
if ( %enable $= "" )
{
$AL_ColorBufferShaderVar = AL_ColorBufferVisualize.isEnabled() ? false : true;
AL_ColorBufferVisualize.toggle();
}
else if ( %enable )
{
AL_DeferredShading.disable();
AL_ColorBufferVisualize.enable();
}
else if ( !%enable )
{
AL_ColorBufferVisualize.disable();
AL_DeferredShading.enable();
}
}
new ShaderData( AL_SpecMapShader )
{
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
DXPixelShaderFile = "shaders/common/lighting/advanced/dbgSpecMapVisualizeP.hlsl";
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/dbgSpecMapVisualizeP.glsl";
samplerNames[0] = "matinfoTex";
pixVersion = 2.0;
};
singleton PostEffect( AL_SpecMapVisualize )
{
shader = AL_SpecMapShader;
stateBlock = AL_DefaultVisualizeState;
texture[0] = "#matinfo";
target = "$backBuffer";
renderPriority = 9999;
};
/// Toggles the visualization of the AL lighting specular power buffer.
function toggleSpecMapViz( %enable )
{
if ( %enable $= "" )
{
$AL_SpecMapShaderVar = AL_SpecMapVisualize.isEnabled() ? false : true;
AL_SpecMapVisualize.toggle();
}
else if ( %enable )
AL_SpecMapVisualize.enable();
else if ( !%enable )
AL_SpecMapVisualize.disable();
}

View file

@ -43,6 +43,7 @@ exec( "./shaders.cs" );
exec( "./lightViz.cs" );
exec( "./shadowViz.cs" );
exec( "./shadowViz.gui" );
exec( "./deferredShading.cs" );
function onActivateAdvancedLM()
{
@ -58,12 +59,18 @@ function onActivateAdvancedLM()
// Enable the offscreen target so that AL will work
// with MSAA back buffers and for HDR rendering.
AL_FormatToken.enable();
// Activate Deferred Shading
AL_DeferredShading.enable();
}
function onDeactivateAdvancedLM()
{
// Disable the offscreen render target.
AL_FormatToken.disable();
// Deactivate Deferred Shading
AL_DeferredShading.disable();
}
function setAdvancedLighting()

View file

@ -56,7 +56,7 @@ new ShaderData( AL_DepthVisualizeShader )
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/dbgDepthVisualizeP.glsl";
samplerNames[0] = "prepassBuffer";
samplerNames[0] = "prepassTex";
samplerNames[1] = "depthViz";
pixVersion = 2.0;
@ -113,7 +113,7 @@ new ShaderData( AL_NormalsVisualizeShader )
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/dbgNormalVisualizeP.glsl";
samplerNames[0] = "prepassBuffer";
samplerNames[0] = "prepassTex";
pixVersion = 2.0;
};
@ -149,7 +149,7 @@ new ShaderData( AL_LightColorVisualizeShader )
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/dbgLightColorVisualizeP.glsl";
samplerNames[0] = "lightInfoBuffer";
samplerNames[0] = "lightPrePassTex";
pixVersion = 2.0;
};
@ -184,7 +184,7 @@ new ShaderData( AL_LightSpecularVisualizeShader )
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/lighting/advanced/gl/dbgLightSpecularVisualizeP.glsl";
samplerNames[0] = "lightInfoBuffer";
samplerNames[0] = "lightPrePassTex";
pixVersion = 2.0;
};
@ -280,3 +280,16 @@ function toggleLightSpecularViz( %enable )
AL_LightSpecularVisualize.disable();
}
function toggleBackbufferViz( %enable )
{
if ( %enable $= "" )
{
$AL_BackbufferVisualizeVar = AL_DeferredShading.isEnabled() ? true : false;
AL_DeferredShading.toggle();
}
else if ( %enable )
AL_DeferredShading.disable();
else if ( !%enable )
AL_DeferredShading.enable();
}

View file

@ -36,8 +36,11 @@ new GFXStateBlockData( AL_VectorLightState )
samplersDefined = true;
samplerStates[0] = SamplerClampPoint; // G-buffer
mSamplerNames[0] = "prePassBuffer";
samplerStates[1] = SamplerClampPoint; // Shadow Map (Do not change this to linear, as all cards can not filter equally.)
mSamplerNames[1] = "shadowMap";
samplerStates[2] = SamplerClampLinear; // SSAO Mask
mSamplerNames[2] = "ssaoMask";
samplerStates[3] = SamplerWrapPoint; // Random Direction Map
cullDefined = true;
@ -66,7 +69,9 @@ new ShaderData( AL_VectorLightShader )
samplerNames[2] = "$dynamicShadowMap";
samplerNames[3] = "$ssaoMask";
samplerNames[4] = "$gTapRotationTex";
samplerNames[5] = "$lightBuffer";
samplerNames[6] = "$colorBuffer";
samplerNames[7] = "$matInfoBuffer";
pixVersion = 3.0;
};
@ -79,6 +84,9 @@ new CustomMaterial( AL_VectorLightMaterial )
sampler["shadowMap"] = "$dynamiclight";
sampler["dynamicShadowMap"] = "$dynamicShadowMap";
sampler["ssaoMask"] = "#ssaoMask";
sampler["lightBuffer"] = "#lightinfo";
sampler["colorBuffer"] = "#color";
sampler["matInfoBuffer"] = "#matinfo";
target = "lightinfo";
@ -103,7 +111,9 @@ new GFXStateBlockData( AL_ConvexLightState )
samplersDefined = true;
samplerStates[0] = SamplerClampPoint; // G-buffer
mSamplerNames[0] = "prePassBuffer";
samplerStates[1] = SamplerClampPoint; // Shadow Map (Do not use linear, these are perspective projections)
mSamplerNames[1] = "shadowMap";
samplerStates[2] = SamplerClampLinear; // Cookie Map
samplerStates[3] = SamplerWrapPoint; // Random Direction Map
@ -133,6 +143,9 @@ new ShaderData( AL_PointLightShader )
samplerNames[2] = "$dynamicShadowMap";
samplerNames[3] = "$cookieMap";
samplerNames[4] = "$gTapRotationTex";
samplerNames[5] = "$lightBuffer";
samplerNames[6] = "$colorBuffer";
samplerNames[7] = "$matInfoBuffer";
pixVersion = 3.0;
};
@ -146,6 +159,9 @@ new CustomMaterial( AL_PointLightMaterial )
sampler["shadowMap"] = "$dynamiclight";
sampler["dynamicShadowMap"] = "$dynamicShadowMap";
sampler["cookieMap"] = "$dynamiclightmask";
sampler["lightBuffer"] = "#lightinfo";
sampler["colorBuffer"] = "#color";
sampler["matInfoBuffer"] = "#matinfo";
target = "lightinfo";
@ -166,6 +182,9 @@ new ShaderData( AL_SpotLightShader )
samplerNames[2] = "$dynamicShadowMap";
samplerNames[3] = "$cookieMap";
samplerNames[4] = "$gTapRotationTex";
samplerNames[5] = "$lightBuffer";
samplerNames[6] = "$colorBuffer";
samplerNames[7] = "$matInfoBuffer";
pixVersion = 3.0;
};
@ -179,6 +198,9 @@ new CustomMaterial( AL_SpotLightMaterial )
sampler["shadowMap"] = "$dynamiclight";
sampler["dynamicShadowMap"] = "$dynamicShadowMap";
sampler["cookieMap"] = "$dynamiclightmask";
sampler["lightBuffer"] = "#lightinfo";
sampler["colorBuffer"] = "#color";
sampler["matInfoBuffer"] = "#matinfo";
target = "lightinfo";

View file

@ -44,7 +44,7 @@ singleton GFXStateBlockData( GammaStateBlock : PFX_DefaultStateBlock )
singleton PostEffect( GammaPostFX )
{
isEnabled = true;
allowReflectPass = false;
allowReflectPass = true;
renderTime = "PFXBeforeBin";
renderBin = "EditorBin";
@ -65,6 +65,8 @@ function GammaPostFX::preProcess( %this )
function GammaPostFX::setShaderConsts( %this )
{
%clampedGamma = mClamp( $pref::Video::Gamma, 0.001, 2.2);
%clampedGamma = mClamp( $pref::Video::Gamma, 2.0, 2.5);
%this.setShaderConst( "$OneOverGamma", 1 / %clampedGamma );
%this.setShaderConst( "$Brightness", $pref::Video::Brightness );
%this.setShaderConst( "$Contrast", $pref::Video::Contrast );
}

View file

@ -38,7 +38,7 @@ singleton ShaderData( PFX_CausticsShader )
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
DXPixelShaderFile = "shaders/common/postFx/caustics/causticsP.hlsl";
OGLVertexShaderFile = "shaders/common/postFx/gl//postFxV.glsl";
OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
OGLPixelShaderFile = "shaders/common/postFx/caustics/gl/causticsP.glsl";
samplerNames[0] = "$prepassTex";
@ -51,7 +51,7 @@ singleton ShaderData( PFX_CausticsShader )
singleton PostEffect( CausticsPFX )
{
isEnabled = false;
renderTime = "PFXBeforeBin";
renderTime = "PFXAfterDiffuse";
renderBin = "ObjTranslucentBin";
//renderPriority = 0.1;

View file

@ -172,6 +172,8 @@ singleton ShaderData( HDR_CombineShader )
samplerNames[2] = "$bloomTex";
samplerNames[3] = "$colorCorrectionTex";
samplerNames[4] = "prepassTex";
pixVersion = 3.0;
};
@ -253,8 +255,10 @@ function HDRPostFX::setShaderConsts( %this )
%combinePass.setShaderConst( "$g_fEnableBlueShift", $HDRPostFX::enableBlueShift );
%combinePass.setShaderConst( "$g_fBlueShiftColor", $HDRPostFX::blueShiftColor );
%clampedGamma = mClamp( $pref::Video::Gamma, 0.001, 2.2);
%clampedGamma = mClamp( $pref::Video::Gamma, 2.0, 2.5);
%combinePass.setShaderConst( "$g_fOneOverGamma", 1 / %clampedGamma );
%combinePass.setShaderConst( "$Brightness", $pref::Video::Brightness );
%combinePass.setShaderConst( "$Contrast", $pref::Video::Contrast );
%whiteCutoff = ( $HDRPostFX::whiteCutoff * $HDRPostFX::whiteCutoff ) *
( $HDRPostFX::whiteCutoff * $HDRPostFX::whiteCutoff );
@ -329,7 +333,7 @@ function HDRPostFX::onDisabled( %this )
singleton PostEffect( HDRPostFX )
{
isEnabled = false;
allowReflectPass = false;
allowReflectPass = true;
// Resolve the HDR before we render any editor stuff
// and before we resolve the scene to the backbuffer.
@ -355,6 +359,7 @@ singleton PostEffect( HDRPostFX )
new PostEffect()
{
allowReflectPass = true;
shader = HDR_DownScale4x4Shader;
stateBlock = HDR_DownSampleStateBlock;
texture[0] = "$inTex";
@ -365,6 +370,7 @@ singleton PostEffect( HDRPostFX )
new PostEffect()
{
allowReflectPass = true;
internalName = "bloomH";
shader = HDR_BloomGaussBlurHShader;
@ -376,6 +382,7 @@ singleton PostEffect( HDRPostFX )
new PostEffect()
{
allowReflectPass = true;
internalName = "bloomV";
shader = HDR_BloomGaussBlurVShader;
@ -390,6 +397,7 @@ singleton PostEffect( HDRPostFX )
// Now calculate the adapted luminance.
new PostEffect()
{
allowReflectPass = true;
internalName = "adaptLum";
shader = HDR_SampleLumShader;
@ -401,6 +409,7 @@ singleton PostEffect( HDRPostFX )
new PostEffect()
{
allowReflectPass = true;
shader = HDR_DownSampleLumShader;
stateBlock = HDR_DownSampleStateBlock;
texture[0] = "$inTex";
@ -411,6 +420,7 @@ singleton PostEffect( HDRPostFX )
new PostEffect()
{
allowReflectPass = true;
shader = HDR_DownSampleLumShader;
stateBlock = HDR_DownSampleStateBlock;
texture[0] = "$inTex";
@ -421,6 +431,7 @@ singleton PostEffect( HDRPostFX )
new PostEffect()
{
allowReflectPass = true;
shader = HDR_DownSampleLumShader;
stateBlock = HDR_DownSampleStateBlock;
texture[0] = "$inTex";
@ -434,6 +445,7 @@ singleton PostEffect( HDRPostFX )
// one... PostEffect takes care to manage that.
new PostEffect()
{
allowReflectPass = true;
internalName = "finalLum";
shader = HDR_CalcAdaptedLumShader;
stateBlock = HDR_DownSampleStateBlock;
@ -450,6 +462,7 @@ singleton PostEffect( HDRPostFX )
// version of the scene.
new PostEffect()
{
allowReflectPass = true;
internalName = "combinePass";
shader = HDR_CombineShader;
@ -458,6 +471,7 @@ singleton PostEffect( HDRPostFX )
texture[1] = "#adaptedLum";
texture[2] = "#bloomFinal";
texture[3] = $HDRPostFX::colorCorrectionRamp;
texture[4] = "#prepass";
target = "$backBuffer";
};
};

View file

@ -47,7 +47,7 @@ singleton PostEffect( TurbulenceFx )
isEnabled = false;
allowReflectPass = true;
renderTime = "PFXAfterBin";
renderTime = "PFXAfterDiffuse";
renderBin = "GlowBin";
renderPriority = 0.5; // Render after the glows themselves

View file

@ -33,7 +33,7 @@ function initRenderManager()
{
enabled = "false";
format = "GFXFormatR8G8B8A8";
format = "GFXFormatR16G16B16A16F";
depthFormat = "GFXFormatD24S8";
aaLevel = 0; // -1 = match backbuffer
@ -49,20 +49,21 @@ function initRenderManager()
// We really need to fix the sky to render after all the
// meshes... but that causes issues in reflections.
DiffuseRenderPassManager.addManager( new RenderObjectMgr() { bintype = "Sky"; renderOrder = 0.1; processAddOrder = 0.1; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr(SkyBin) { bintype = "Sky"; renderOrder = 0.1; processAddOrder = 0.1; } );
//DiffuseRenderPassManager.addManager( new RenderVistaMgr() { bintype = "Vista"; renderOrder = 0.15; processAddOrder = 0.15; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr() { bintype = "Begin"; renderOrder = 0.2; processAddOrder = 0.2; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr(BeginBin) { bintype = "Begin"; renderOrder = 0.2; processAddOrder = 0.2; } );
// Normal mesh rendering.
DiffuseRenderPassManager.addManager( new RenderTerrainMgr() { renderOrder = 0.4; processAddOrder = 0.4; } );
DiffuseRenderPassManager.addManager( new RenderMeshMgr() { bintype = "Mesh"; renderOrder = 0.5; processAddOrder = 0.5; } );
DiffuseRenderPassManager.addManager( new RenderImposterMgr() { renderOrder = 0.56; processAddOrder = 0.56; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr() { bintype = "Object"; renderOrder = 0.6; processAddOrder = 0.6; } );
DiffuseRenderPassManager.addManager( new RenderTerrainMgr(TerrainBin) { renderOrder = 0.4; processAddOrder = 0.4; basicOnly = true; } );
DiffuseRenderPassManager.addManager( new RenderMeshMgr(MeshBin) { bintype = "Mesh"; renderOrder = 0.5; processAddOrder = 0.5; basicOnly = true; } );
DiffuseRenderPassManager.addManager( new RenderImposterMgr(ImposterBin) { renderOrder = 0.56; processAddOrder = 0.56; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr(ObjectBin) { bintype = "Object"; renderOrder = 0.6; processAddOrder = 0.6; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr() { bintype = "Shadow"; renderOrder = 0.7; processAddOrder = 0.7; } );
DiffuseRenderPassManager.addManager( new RenderMeshMgr() { bintype = "Decal"; renderOrder = 0.8; processAddOrder = 0.8; } );
DiffuseRenderPassManager.addManager( new RenderOcclusionMgr() { bintype = "Occluder"; renderOrder = 0.9; processAddOrder = 0.9; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr(ShadowBin) { bintype = "Shadow"; renderOrder = 0.7; processAddOrder = 0.7; } );
DiffuseRenderPassManager.addManager( new RenderMeshMgr(DecalRoadBin) { bintype = "DecalRoad"; renderOrder = 0.8; processAddOrder = 0.8; } );
DiffuseRenderPassManager.addManager( new RenderMeshMgr(DecalBin) { bintype = "Decal"; renderOrder = 0.81; processAddOrder = 0.81; } );
DiffuseRenderPassManager.addManager( new RenderOcclusionMgr(OccluderBin){ bintype = "Occluder"; renderOrder = 0.9; processAddOrder = 0.9; } );
// We now render translucent objects that should handle
// their own fogging and lighting.
@ -70,10 +71,10 @@ function initRenderManager()
// Note that the fog effect is triggered before this bin.
DiffuseRenderPassManager.addManager( new RenderObjectMgr(ObjTranslucentBin) { bintype = "ObjectTranslucent"; renderOrder = 1.0; processAddOrder = 1.0; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr() { bintype = "Water"; renderOrder = 1.2; processAddOrder = 1.2; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr() { bintype = "Foliage"; renderOrder = 1.3; processAddOrder = 1.3; } );
DiffuseRenderPassManager.addManager( new RenderParticleMgr() { renderOrder = 1.35; processAddOrder = 1.35; } );
DiffuseRenderPassManager.addManager( new RenderTranslucentMgr() { renderOrder = 1.4; processAddOrder = 1.4; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr(WaterBin) { bintype = "Water"; renderOrder = 1.2; processAddOrder = 1.2; } );
DiffuseRenderPassManager.addManager( new RenderObjectMgr(FoliageBin) { bintype = "Foliage"; renderOrder = 1.3; processAddOrder = 1.3; } );
DiffuseRenderPassManager.addManager( new RenderParticleMgr(ParticleBin) { renderOrder = 1.35; processAddOrder = 1.35; } );
DiffuseRenderPassManager.addManager( new RenderTranslucentMgr(TranslucentBin){ renderOrder = 1.4; processAddOrder = 1.4; } );
DiffuseRenderPassManager.addManager(new RenderObjectMgr(FogBin){ bintype = "ObjectVolumetricFog"; renderOrder = 1.45; processAddOrder = 1.45; } );
@ -85,7 +86,7 @@ function initRenderManager()
DiffuseRenderPassManager.addManager( new RenderObjectMgr(EditorBin) { bintype = "Editor"; renderOrder = 1.6; processAddOrder = 1.6; } );
// Resolve format change token last.
DiffuseRenderPassManager.addManager( new RenderPassStateBin() { renderOrder = 1.7; stateToken = AL_FormatToken; } );
DiffuseRenderPassManager.addManager( new RenderPassStateBin(FinalBin) { renderOrder = 1.7; stateToken = AL_FormatToken; } );
}
/// This post effect is used to copy data from the non-MSAA back-buffer to the

View file

@ -22,13 +22,13 @@
new GFXStateBlockData( ScatterSkySBData )
{
cullDefined = true;
//cullDefined = true;
cullMode = "GFXCullNone";
zDefined = true;
zEnable = true;
zWriteEnable = false;
zFunc = "GFXCmpLessEqual";
//zFunc = "GFXCmpLessEqual";
samplersDefined = true;
samplerStates[0] = SamplerClampLinear;

View file

@ -101,4 +101,40 @@ new ShaderData( fxFoliageReplicatorShader )
samplerNames[1] = "$alphaMap";
pixVersion = 1.4;
};
singleton ShaderData( VolumetricFogPrePassShader )
{
DXVertexShaderFile = "shaders/common/VolumetricFog/VFogPreV.hlsl";
DXPixelShaderFile = "shaders/common/VolumetricFog/VFogPreP.hlsl";
OGLVertexShaderFile = "shaders/common/VolumetricFog/gl/VFogPreV.glsl";
OGLPixelShaderFile = "shaders/common/VolumetricFog/gl/VFogPreP.glsl";
pixVersion = 3.0;
};
singleton ShaderData( VolumetricFogShader )
{
DXVertexShaderFile = "shaders/common/VolumetricFog/VFogV.hlsl";
DXPixelShaderFile = "shaders/common/VolumetricFog/VFogP.hlsl";
OGLVertexShaderFile = "shaders/common/VolumetricFog/gl/VFogV.glsl";
OGLPixelShaderFile = "shaders/common/VolumetricFog/gl/VFogP.glsl";
samplerNames[0] = "$prepassTex";
samplerNames[1] = "$depthBuffer";
samplerNames[2] = "$frontBuffer";
samplerNames[3] = "$density";
pixVersion = 3.0;
};
singleton ShaderData( VolumetricFogReflectionShader )
{
DXVertexShaderFile = "shaders/common/VolumetricFog/VFogPreV.hlsl";
DXPixelShaderFile = "shaders/common/VolumetricFog/VFogRefl.hlsl";
OGLVertexShaderFile = "shaders/common/VolumetricFog/gl/VFogPreV.glsl";
OGLPixelShaderFile = "shaders/common/VolumetricFog/gl/VFogRefl.glsl";
pixVersion = 3.0;
};

View file

@ -22,7 +22,7 @@
#include "../../../gl/hlslCompat.glsl"
#include "shadergen:/autogenConditioners.h"
#include "../../../postfx/gl/postFx.glsl"
#include "../../../postFx/gl/postFX.glsl"
#include "../../../gl/torque.glsl"
uniform sampler2D colorBufferTex;

View file

@ -1354,132 +1354,6 @@
bitmap = "tools/gui/images/delete";
};
};
new GuiBitmapCtrl(){
position="6 357";
extent ="175 2";
HorizSizing = "width";
bitmap ="tools/gui/images/separator-v";
};
new GuiContainer(){ // Environment Map
profile="ToolsGuiDefaultProfile";
isContainer = "1";
position = "6 359";
Extent = "185 52";
HorizSizing = "width";
new GuiBitmapCtrl() {
canSaveDynamicFields = "0";
internalName = "envMapDisplayBitmap";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "1 1";
Extent = "48 48";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
hovertime = "1000";
bitmap = "tools/materialeditor/gui/unknownImage";
wrap = "0";
};
new GuiTextCtrl() {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "0";
Profile = "EditorTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "56 -3";
Extent = "72 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
hovertime = "1000";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
text = "Env Map";
maxLength = "1024";
};
new GuiBitmapButtonCtrl() {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "1 1";
Extent = "48 48";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "MaterialEditorGui.updateTextureMap(\"env\", 1);";
tooltipprofile = "ToolsGuiDefaultProfile";
ToolTip = "Change the active Environment Map for this layer.";
hovertime = "1000";
groupNum = "-1";
buttonType = "PushButton";
useMouseEvents = "0";
bitmap = "tools/materialEditor/gui/cubemapBtnBorder";
};
new GuiTextCtrl() {
canSaveDynamicFields = "0";
internalName = "envMapNameText";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "width";
VertSizing = "bottom";
position = "56 16";
Extent = "143 17";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
hovertime = "1000";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
text = "None";
maxLength = "1024";
};
new GuiButtonCtrl(){
profile="ToolsGuiButtonProfile";
text ="Edit";
HorizSizing = "left";
VertSizing = "bottom";
position = "134 34";
Extent = "40 16";
buttonType = "PushButton";
command="MaterialEditorGui.updateTextureMap(\"env\", 1);";
};
new GuiBitmapButtonCtrl() {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiDefaultProfile";
HorizSizing = "left";
VertSizing = "bottom";
position = "177 34";
Extent = "16 16";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "MaterialEditorGui.updateTextureMap(\"env\", 0);";
hovertime = "1000";
groupNum = "-1";
buttonType = "PushButton";
useMouseEvents = "0";
bitmap = "tools/gui/images/delete";
};
};
};
};
new GuiRolloutCtrl() {
@ -1491,6 +1365,7 @@
Position = "0 0";
Extent = "195 0";
Caption = "Accumulation Properties";
Expanded = false;
Margin = "-1 0 0 0";
DragSizable = false;
container = true;
@ -1967,6 +1842,7 @@
Position = "0 0";
Extent = "185 0";
Caption = "Lighting Properties";
Expanded = false;
Margin = "-1 0 0 0";
DragSizable = false;
container = true;
@ -2364,101 +2240,6 @@
useMouseEvents = "0";
useInactiveState = "0";
};
new GuiCheckBoxCtrl() {
canSaveDynamicFields = "0";
internalName = "subSurfaceCheckbox";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiCheckBoxProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "8 46";
Extent = "79 16";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "MaterialEditorGui.updateActiveMaterial(\"subSurface[\" @ MaterialEditorGui.currentLayer @ \"]\", $ThisControl.getValue());";
tooltipprofile = "ToolsGuiDefaultProfile";
ToolTip = "Enables the use of subsurface scattering for this layer.";
hovertime = "1000";
text = "Sub Surface";
groupNum = "-1";
buttonType = "ToggleButton";
useMouseEvents = "0";
useInactiveState = "0";
};
new GuiSwatchButtonCtrl() {
canSaveDynamicFields = "0";
internalName = "subSurfaceColorSwatch";
Enabled = "1";
isContainer = "0";
Profile = "GuiInspectorSwatchButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "90 46";
Extent = "16 16";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "getColorF(materialEd_PreviewMaterial.subSurfaceColor[MaterialEditorGui.currentLayer], \"MaterialEditorGui.updateSubSurfaceColor\");";
tooltip = "Set the subsurface scattering color";
hovertime = "1000";
groupNum = "-1";
buttonType = "PushButton";
useMouseEvents = "0";
};
new GuiTextEditCtrl() {
canSaveDynamicFields = "0";
internalName = "subSurfaceRolloffTextEdit";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "114 45";
Extent = "29 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltip = "Set the subsurface rolloff factor";
Command = "MaterialEditorGui.updateActiveMaterial(\"subSurfaceRolloff[\" @ MaterialEditorGui.currentLayer @ \"]\", $ThisControl.getText());";
hovertime = "1000";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
text = "32";
maxLength = "5";
};
new GuiTextCtrl() {
HorizSizing = "right";
VertSizing = "bottom";
position = "9 65";
Extent = "89 16";
text = "Minnaert constant";
};
new GuiTextEditCtrl() {
canSaveDynamicFields = "0";
internalName = "minnaertTextEdit";
Enabled = "1";
isContainer = "0";
Profile = "ToolsGuiTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "114 65";
Extent = "29 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "MaterialEditorGui.updateActiveMaterial(\"minnaertConstant[\" @ MaterialEditorGui.currentLayer @ \"]\", $ThisControl.getText());";
hovertime = "1000";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
text = "32";
maxLength = "3";
};
};
};
};
@ -2471,9 +2252,9 @@
Position = "0 0";
Extent = "185 0";
Caption = "Animation Properties";
Expanded = false;
Margin = "-1 0 0 0";
DragSizable = false;
Expanded = false;
container = true;
parentRollout = %this.rollout;
object = %behavior;
@ -3283,6 +3064,7 @@
Position = "0 0";
Extent = "202 0";
Caption = "Advanced (all layers)";
Expanded = false;
Margin = "4 4 4 0";
DragSizable = false;
container = true;
@ -3519,7 +3301,7 @@
Profile = "ToolsGuiCheckBoxProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "100 56";
position = "105 55";
Extent = "85 16";
MinExtent = "8 2";
canSave = "1";

View file

@ -120,6 +120,9 @@ function initializeWorldEditor()
EVisibility.addOption( "AL: Light Specular Viz", "$AL_LightSpecularVisualizeVar", "toggleLightSpecularViz" );
EVisibility.addOption( "AL: Normals Viz", "$AL_NormalsVisualizeVar", "toggleNormalsViz" );
EVisibility.addOption( "AL: Depth Viz", "$AL_DepthVisualizeVar", "toggleDepthViz" );
EVisibility.addOption( "AL: Color Buffer", "$AL_ColorBufferShaderVar", "toggleColorBufferViz" );
EVisibility.addOption( "AL: Spec Map", "$AL_SpecMapShaderVar", "toggleSpecMapViz");
EVisibility.addOption( "AL: Backbuffer", "$AL_BackbufferVisualizeVar", "toggleBackbufferViz" );
EVisibility.addOption( "AL: Glow Buffer", "$AL_GlowVisualizeVar", "toggleGlowViz" );
EVisibility.addOption( "AL: PSSM Cascade Viz", "$AL::PSSMDebugRender", "" );
EVisibility.addOption( "Frustum Lock", "$Scene::lockCull", "" );

View file

@ -244,6 +244,8 @@ function EditorSaveMissionMenu()
function EditorSaveMission()
{
// just save the mission without renaming it
// first check for dirty and read-only files:
if((EWorldEditor.isDirty || ETerrainEditor.isMissionDirty) && !isWriteableFileName($Server::MissionFile))
{