Add a button on the texture viewer that flips the tex in Y

* Useful for systems that render OpenGL upside down with a final flip,
  for example.
This commit is contained in:
Baldur Karlsson
2014-07-28 10:28:28 +01:00
parent d10e9e239f
commit 9fda74fc07
19 changed files with 178 additions and 92 deletions
+8
View File
@@ -296,6 +296,14 @@
</entry>
</row>
<row>
<entry>
<para><mediaLinkInline><image xlink:href="flip_y"/></mediaLinkInline> Flip Y</para>
</entry>
<entry><para>This button toggles flipping the co-ordinate system in Y - y=0 is at the bottom of the window
instead of at the top.</para>
</entry>
</row>
<row>
<entry>
<para>Render Overlay <mediaLinkInline><image xlink:href="OverlaySelect"/></mediaLinkInline></para>
Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

+4
View File
@@ -118,6 +118,10 @@
<Tokens Include="Tokens.tokens" />
</ItemGroup>
<ItemGroup>
<Image Include="imgs\icons\flip_y.png">
<ImageId>flip_y</ImageId>
<AlternateText>flip y</AlternateText>
</Image>
<Image Include="imgs\Screenshots\DebugMessages.png">
<ImageId>DebugMessages</ImageId>
<AlternateText>Debug Messages Window</AlternateText>
+2 -2
View File
@@ -35,7 +35,7 @@ layout (binding = 0, std140) uniform texdisplay
float RangeMinimum;
float InverseRangeSize;
float MipLevel;
float dummy2;
int FlipY;
vec3 TextureResolutionPS;
int OutputDisplayFormat;
@@ -64,7 +64,7 @@ void main(void)
// TODO: Use MipLevel and Slice parameters
// TODO: Sample from a point or linear sampler depending on if we're
// upscaling (point) or downscaling mip 0 (linear)
vec4 col = texture(tex0, vec2(uv.x, 1.0f-uv.y));
vec4 col = texture(tex0, vec2(uv.x, FlipY > 0 ? uv.y : 1.0f-uv.y));
if(RawOutput != 0)
{
+1 -1
View File
@@ -78,7 +78,7 @@ cbuffer DebugPixelCBufferData REG(b0)
float RangeMinimum;
float InverseRangeSize;
float MipLevel;
int padding;
int FlipY;
float3 WireframeColour;
int OutputDisplayFormat;
+8 -3
View File
@@ -45,20 +45,25 @@ float4 RENDERDOC_TexDisplayPS(v2f IN) : SV_Target0
uint4 ucol = 0;
int4 scol = 0;
float2 uvTex = IN.tex.xy;
if(FlipY)
uvTex.y = 1.0f - uvTex.y;
if(uintTex)
{
ucol = SampleTextureUInt4(OutputDisplayFormat & TEXDISPLAY_TYPEMASK,
IN.tex.xy, Slice, MipLevel, TextureResolutionPS);
uvTex, Slice, MipLevel, TextureResolutionPS);
}
else if(sintTex)
{
scol = SampleTextureInt4 (OutputDisplayFormat & TEXDISPLAY_TYPEMASK,
IN.tex.xy, Slice, MipLevel, TextureResolutionPS);
uvTex, Slice, MipLevel, TextureResolutionPS);
}
else
{
col = SampleTextureFloat4(OutputDisplayFormat & TEXDISPLAY_TYPEMASK, (ScalePS < 1 && MipLevel == 0),
IN.tex.xy, Slice, MipLevel, TextureResolutionPS);
uvTex, Slice, MipLevel, TextureResolutionPS);
}
if(RawOutput)
+2
View File
@@ -1414,6 +1414,7 @@ void D3D11DebugManager::PickPixel(ResourceId texture, uint32_t x, uint32_t y, ui
texDisplay.Red = texDisplay.Green = texDisplay.Blue = texDisplay.Alpha = true;
texDisplay.HDRMul = -1.0f;
texDisplay.linearDisplayAsGamma = true;
texDisplay.FlipY = false;
texDisplay.mip = mip;
texDisplay.CustomShader = ResourceId();
texDisplay.sliceFace = sliceFace;
@@ -2060,6 +2061,7 @@ ResourceId D3D11DebugManager::ApplyCustomShader(ResourceId shader, ResourceId te
TextureDisplay disp;
disp.Red = disp.Green = disp.Blue = disp.Alpha = true;
disp.FlipY = false;
disp.offx = 0.0f;
disp.offy = 0.0f;
disp.CustomShader = shader;
+2
View File
@@ -3271,6 +3271,8 @@ bool D3D11DebugManager::RenderTexture(TextureDisplay cfg)
pixelData.WireframeColour.x = cfg.HDRMul;
pixelData.RawOutput = cfg.rawoutput ? 1 : 0;
pixelData.FlipY = cfg.FlipY ? 1 : 0;
TextureShaderDetails details = GetShaderDetails(cfg.texid, cfg.rawoutput ? true : false);
+16 -13
View File
@@ -197,6 +197,7 @@ void GLReplay::PickPixel(ResourceId texture, uint32_t x, uint32_t y, uint32_t sl
TextureDisplay texDisplay;
texDisplay.Red = texDisplay.Green = texDisplay.Blue = texDisplay.Alpha = true;
texDisplay.FlipY = false;
texDisplay.HDRMul = -1.0f;
texDisplay.linearDisplayAsGamma = true;
texDisplay.mip = mip;
@@ -240,23 +241,23 @@ bool GLReplay::RenderTexture(TextureDisplay cfg)
struct uboData
{
Vec2f Position;
float Scale;
float HDRMul;
Vec2f Position;
float Scale;
float HDRMul;
Vec4f Channels;
Vec4f Channels;
float RangeMinimum;
float InverseRangeSize;
float MipLevel;
float dummy2;
float RangeMinimum;
float InverseRangeSize;
float MipLevel;
int32_t FlipY;
Vec3f TextureResolutionPS;
int OutputDisplayFormat;
Vec3f TextureResolutionPS;
int32_t OutputDisplayFormat;
Vec2f OutputRes;
int RawOutput;
float Slice;
Vec2f OutputRes;
int32_t RawOutput;
float Slice;
};
uboData *ubo = (uboData *)gl.glMapBufferRange(eGL_UNIFORM_BUFFER, 0, sizeof(uboData), GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
@@ -290,6 +291,8 @@ bool GLReplay::RenderTexture(TextureDisplay cfg)
}
ubo->HDRMul = cfg.HDRMul;
ubo->FlipY = cfg.FlipY ? 1 : 0;
if(cfg.rangemax <= cfg.rangemin) cfg.rangemax += 0.00001f;
+1
View File
@@ -59,6 +59,7 @@ struct TextureDisplay
float rangemax;
float scale;
bool32 Red, Green, Blue, Alpha;
bool32 FlipY;
float HDRMul;
bool32 linearDisplayAsGamma;
ResourceId CustomShader;
+2
View File
@@ -362,6 +362,7 @@ bool ReplayOutput::Display()
disp.Alpha = false;
disp.HDRMul = -1.0f;
disp.linearDisplayAsGamma = true;
disp.FlipY = false;
disp.mip = 0;
disp.CustomShader = ResourceId();
disp.texid = m_pDevice->GetLiveID(m_Thumbnails[i].texture);
@@ -471,6 +472,7 @@ void ReplayOutput::DisplayTex()
texDisplay.CustomShader = ResourceId();
texDisplay.scale = m_RenderData.texDisplay.scale;
texDisplay.HDRMul = -1.0f;
texDisplay.FlipY = false;
texDisplay.rangemin = 0.0f;
texDisplay.rangemax = 1.0f;
+4
View File
@@ -242,6 +242,8 @@ void DisplayRendererPreview(ReplayRenderer *renderer)
d.overlay = eTexOverlay_None;
d.CustomShader = ResourceId();
d.HDRMul = -1.0f;
d.linearDisplayAsGamma = true;
d.FlipY = false;
d.rangemin = 0.0f;
d.rangemax = 1.0f;
d.scale = 1.0f;
@@ -249,6 +251,8 @@ void DisplayRendererPreview(ReplayRenderer *renderer)
d.offy = 0.0f;
d.sliceFace = 0;
d.rawoutput = false;
d.lightBackgroundColour = d.darkBackgroundColour =
FloatVector(0.0f, 0.0f, 0.0f, 0.0f);
d.Red = d.Green = d.Blue = true;
d.Alpha = false;
+1
View File
@@ -413,6 +413,7 @@ namespace renderdoc
public float rangemax = 1.0f;
public float scale = 1.0f;
public bool Red = true, Green = true, Blue = true, Alpha = false;
public bool FlipY = false;
public float HDRMul = -1.0f;
public bool linearDisplayAsGamma = true;
public ResourceId CustomShader = ResourceId.Null;
+11 -1
View File
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18408
// Runtime Version:4.0.30319.17929
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -240,6 +240,16 @@ namespace renderdocui.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap flip_y {
get {
object obj = ResourceManager.GetObject("flip_y", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
+3
View File
@@ -274,4 +274,7 @@
<data name="wireframe_mesh" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\wireframe_mesh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="flip_y" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\flip_y.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

+78 -64
View File
@@ -33,21 +33,21 @@
System.Windows.Forms.ToolStripLabel toolStripLabel2;
System.Windows.Forms.ToolStripLabel toolStripLabel3;
System.Windows.Forms.ToolStripLabel toolStripLabel1;
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin1 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient1 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient2 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient3 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient4 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient5 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient6 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient7 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin2 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient4 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient8 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient9 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient5 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient10 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient11 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient12 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient13 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient14 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TextureViewer));
this.saveTextureDialog = new System.Windows.Forms.SaveFileDialog();
this.rightclickMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
@@ -78,6 +78,7 @@
this.toolStripLabel4 = new System.Windows.Forms.ToolStripLabel();
this.fitToWindow = new System.Windows.Forms.ToolStripButton();
this.zoomOption = new System.Windows.Forms.ToolStripComboBox();
this.flip_y = new System.Windows.Forms.ToolStripButton();
this.overlayStrip = new System.Windows.Forms.ToolStrip();
this.toolStripLabel5 = new System.Windows.Forms.ToolStripLabel();
this.overlay = new System.Windows.Forms.ToolStripComboBox();
@@ -375,52 +376,52 @@
this.dockPanel.RaiseTabsOnDragOver = false;
this.dockPanel.ShowDocumentIcon = true;
this.dockPanel.Size = new System.Drawing.Size(1093, 90);
dockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin1.DockStripGradient = dockPanelGradient1;
tabGradient1.EndColor = System.Drawing.SystemColors.Control;
tabGradient1.StartColor = System.Drawing.SystemColors.Control;
tabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin1.TabGradient = tabGradient1;
autoHideStripSkin1.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1;
tabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient2.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient1.ActiveTabGradient = tabGradient2;
dockPanelGradient2.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient2.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient1.DockStripGradient = dockPanelGradient2;
tabGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient3.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient1.InactiveTabGradient = tabGradient3;
dockPaneStripSkin1.DocumentGradient = dockPaneStripGradient1;
dockPaneStripSkin1.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
tabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient1.ActiveCaptionGradient = tabGradient4;
tabGradient5.EndColor = System.Drawing.SystemColors.Control;
tabGradient5.StartColor = System.Drawing.SystemColors.Control;
tabGradient5.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient1.ActiveTabGradient = tabGradient5;
dockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient1.DockStripGradient = dockPanelGradient3;
tabGradient6.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient6.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient1.InactiveCaptionGradient = tabGradient6;
tabGradient7.EndColor = System.Drawing.Color.Transparent;
tabGradient7.StartColor = System.Drawing.Color.Transparent;
tabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7;
dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1;
dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
this.dockPanel.Skin = dockPanelSkin1;
dockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin2.DockStripGradient = dockPanelGradient4;
tabGradient8.EndColor = System.Drawing.SystemColors.Control;
tabGradient8.StartColor = System.Drawing.SystemColors.Control;
tabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin2.TabGradient = tabGradient8;
autoHideStripSkin2.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
dockPanelSkin2.AutoHideStripSkin = autoHideStripSkin2;
tabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient2.ActiveTabGradient = tabGradient9;
dockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient2.DockStripGradient = dockPanelGradient5;
tabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient2.InactiveTabGradient = tabGradient10;
dockPaneStripSkin2.DocumentGradient = dockPaneStripGradient2;
dockPaneStripSkin2.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
tabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient2.ActiveCaptionGradient = tabGradient11;
tabGradient12.EndColor = System.Drawing.SystemColors.Control;
tabGradient12.StartColor = System.Drawing.SystemColors.Control;
tabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient2.ActiveTabGradient = tabGradient12;
dockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient2.DockStripGradient = dockPanelGradient6;
tabGradient13.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient13.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient2.InactiveCaptionGradient = tabGradient13;
tabGradient14.EndColor = System.Drawing.Color.Transparent;
tabGradient14.StartColor = System.Drawing.Color.Transparent;
tabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient2.InactiveTabGradient = tabGradient14;
dockPaneStripSkin2.ToolWindowGradient = dockPaneStripToolWindowGradient2;
dockPanelSkin2.DockPaneStripSkin = dockPaneStripSkin2;
this.dockPanel.Skin = dockPanelSkin2;
this.dockPanel.TabIndex = 0;
//
// depthstencilPanel
@@ -468,11 +469,12 @@
this.zoomStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripLabel4,
this.fitToWindow,
this.zoomOption});
this.zoomOption,
this.flip_y});
this.zoomStrip.Location = new System.Drawing.Point(0, 50);
this.zoomStrip.Margin = new System.Windows.Forms.Padding(0, 0, 12, 0);
this.zoomStrip.Name = "zoomStrip";
this.zoomStrip.Size = new System.Drawing.Size(204, 25);
this.zoomStrip.Size = new System.Drawing.Size(258, 25);
this.zoomStrip.TabIndex = 2;
//
// toolStripLabel4
@@ -511,6 +513,17 @@
this.zoomOption.SelectedIndexChanged += new System.EventHandler(this.zoomOption_SelectedIndexChanged);
this.zoomOption.KeyDown += new System.Windows.Forms.KeyEventHandler(this.zoomOption_KeyDown);
//
// flip_y
//
this.flip_y.CheckOnClick = true;
this.flip_y.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.flip_y.Image = global::renderdocui.Properties.Resources.flip_y;
this.flip_y.ImageTransparentColor = System.Drawing.Color.Magenta;
this.flip_y.Name = "flip_y";
this.flip_y.Size = new System.Drawing.Size(23, 22);
this.flip_y.Text = "Flip Y";
this.flip_y.CheckedChanged += new System.EventHandler(this.updateChannelsHandler);
//
// overlayStrip
//
this.overlayStrip.Dock = System.Windows.Forms.DockStyle.None;
@@ -518,7 +531,7 @@
this.overlayStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripLabel5,
this.overlay});
this.overlayStrip.Location = new System.Drawing.Point(216, 50);
this.overlayStrip.Location = new System.Drawing.Point(270, 50);
this.overlayStrip.Margin = new System.Windows.Forms.Padding(0, 0, 12, 0);
this.overlayStrip.Name = "overlayStrip";
this.overlayStrip.Size = new System.Drawing.Size(171, 25);
@@ -1419,6 +1432,7 @@
private System.Windows.Forms.ToolStripButton customCreate;
private System.Windows.Forms.ToolStripButton customDelete;
private System.Windows.Forms.ToolStripButton customEdit;
private System.Windows.Forms.ToolStripButton flip_y;
private System.Windows.Forms.ToolStripButton gammaDisplay;
private System.Windows.Forms.ToolStripSeparator gammaSeparator;
private System.Windows.Forms.ToolTip toolTip;
+34 -8
View File
@@ -1353,7 +1353,11 @@ namespace renderdocui.Windows
}
}
string hoverCoords = String.Format("{0}, {1}", m_CurHoverPixel.X >> (int)m_TexDisplay.mip, m_CurHoverPixel.Y >> (int)m_TexDisplay.mip);
int y = m_CurHoverPixel.Y >> (int)m_TexDisplay.mip;
if (m_TexDisplay.FlipY)
y = (int)tex.height - y;
string hoverCoords = String.Format("{0}, {1}", m_CurHoverPixel.X >> (int)m_TexDisplay.mip, y);
string statusText = "Hover - " + hoverCoords;
if (m_CurHoverPixel.X > tex.width || m_CurHoverPixel.Y > tex.height || m_CurHoverPixel.X < 0 || m_CurHoverPixel.Y < 0)
@@ -1361,8 +1365,12 @@ namespace renderdocui.Windows
if (m_CurPixelValue != null)
{
y = m_PickedPoint.Y >> (int)m_TexDisplay.mip;
if (m_TexDisplay.FlipY)
y = (int)tex.height - y;
statusText += " - Right click - " +
(m_PickedPoint.X >> (int)m_TexDisplay.mip) + "," + (m_PickedPoint.Y >> (int)m_TexDisplay.mip) + ": ";
(m_PickedPoint.X >> (int)m_TexDisplay.mip) + "," + y + ": ";
PixelValue val = m_CurPixelValue;
@@ -1584,6 +1592,8 @@ namespace renderdocui.Windows
}
}
m_TexDisplay.FlipY = flip_y.Checked;
channelStrip.ResumeLayout();
m_Core.Renderer.BeginInvoke(RT_UpdateAndDisplay);
@@ -1894,9 +1904,16 @@ namespace renderdocui.Windows
private void RT_PickPixelsAndUpdate(int x, int y, bool ctx)
{
FetchTexture tex = CurrentTexture;
if (tex == null) return;
if(ctx)
m_Output.SetPixelContextLocation((UInt32)x, (UInt32)y);
if (m_TexDisplay.FlipY)
y = (int)tex.height - y;
var pickValue = m_Output.PickPixel(m_TexDisplay.texid, true, (UInt32)x, (UInt32)y,
m_TexDisplay.sliceFace, m_TexDisplay.mip);
PixelValue realValue = null;
@@ -2022,13 +2039,22 @@ namespace renderdocui.Windows
if (e.Button == MouseButtons.None && m_TexDisplay.texid != ResourceId.Null)
{
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
{
if (m_Output != null)
RT_UpdateHoverColour(m_Output.PickPixel(m_TexDisplay.texid, true, (UInt32)m_CurHoverPixel.X, (UInt32)m_CurHoverPixel.Y,
m_TexDisplay.sliceFace, m_TexDisplay.mip));
});
FetchTexture tex = CurrentTexture;
if (tex != null)
{
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
{
if (m_Output != null)
{
UInt32 y = (UInt32)m_CurHoverPixel.Y;
if (m_TexDisplay.FlipY)
y = tex.height - y;
RT_UpdateHoverColour(m_Output.PickPixel(m_TexDisplay.texid, true, (UInt32)m_CurHoverPixel.X, y,
m_TexDisplay.sliceFace, m_TexDisplay.mip));
}
});
}
}
Panel p = renderContainer;
+1
View File
@@ -451,6 +451,7 @@
<None Include="Resources\hourglass.png" />
<None Include="Resources\connect.png" />
<None Include="Resources\disconnect.png" />
<None Include="Resources\flip_y.png" />
<Content Include="Resources\RightArrow_Green_16x16.png" />
<Content Include="Resources\icon.ico" />
<None Include="Resources\page_white_delete.png" />