Overhaul depth preview rendering:
* Replace Jet color map with grayscale * Added Shift + \ hotkey to toggle preview * Added Shift + [, Shift + ] hotkeys to change contrast * Added Shift + ;, Shift + ' hotkeys to change offset
This commit is contained in:
@@ -226,9 +226,10 @@ namespace OpenRA.Graphics
|
||||
shader.SetVec("DepthTextureScale", 128 * depthScale / height);
|
||||
}
|
||||
|
||||
public void SetDepthPreviewEnabled(bool enabled)
|
||||
public void SetDepthPreview(bool enabled, float contrast, float offset)
|
||||
{
|
||||
shader.SetBool("EnableDepthPreview", enabled);
|
||||
shader.SetVec("DepthPreviewParams", contrast, offset);
|
||||
}
|
||||
|
||||
public void SetAntialiasingPixelsPerTexel(float pxPerTx)
|
||||
|
||||
@@ -45,8 +45,6 @@ namespace OpenRA.Graphics
|
||||
|
||||
readonly List<IRenderable> renderablesBuffer = new List<IRenderable>();
|
||||
|
||||
bool lastDepthPreviewEnabled;
|
||||
|
||||
internal WorldRenderer(ModData modData, World world)
|
||||
{
|
||||
World = world;
|
||||
@@ -256,11 +254,7 @@ namespace OpenRA.Graphics
|
||||
if (World.WorldActor.Disposed)
|
||||
return;
|
||||
|
||||
if (debugVis.Value != null && lastDepthPreviewEnabled != debugVis.Value.DepthBuffer)
|
||||
{
|
||||
lastDepthPreviewEnabled = debugVis.Value.DepthBuffer;
|
||||
Game.Renderer.WorldSpriteRenderer.SetDepthPreviewEnabled(lastDepthPreviewEnabled);
|
||||
}
|
||||
debugVis.Value?.UpdateDepthBuffer();
|
||||
|
||||
var bounds = Viewport.GetScissorBounds(World.Type != WorldType.Editor);
|
||||
Game.Renderer.EnableScissor(bounds);
|
||||
|
||||
@@ -20,7 +20,51 @@ namespace OpenRA.Traits
|
||||
public bool CombatGeometry;
|
||||
public bool RenderGeometry;
|
||||
public bool ScreenMap;
|
||||
public bool DepthBuffer;
|
||||
public bool ActorTags;
|
||||
|
||||
// The depth buffer may have been left enabled by the previous world
|
||||
// Initializing this as dirty forces us to reset the default rendering before the first render
|
||||
bool depthBufferDirty = true;
|
||||
bool depthBuffer;
|
||||
public bool DepthBuffer
|
||||
{
|
||||
get => depthBuffer;
|
||||
set
|
||||
{
|
||||
depthBuffer = value;
|
||||
depthBufferDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
float depthBufferContrast = 1f;
|
||||
public float DepthBufferContrast
|
||||
{
|
||||
get => depthBufferContrast;
|
||||
set
|
||||
{
|
||||
depthBufferContrast = value;
|
||||
depthBufferDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
float depthBufferOffset;
|
||||
public float DepthBufferOffset
|
||||
{
|
||||
get => depthBufferOffset;
|
||||
set
|
||||
{
|
||||
depthBufferOffset = value;
|
||||
depthBufferDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateDepthBuffer()
|
||||
{
|
||||
if (depthBufferDirty)
|
||||
{
|
||||
Game.Renderer.WorldSpriteRenderer.SetDepthPreview(DepthBuffer, DepthBufferContrast, DepthBufferOffset);
|
||||
depthBufferDirty = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user