Pass through multisample state and point/line rast state values

This commit is contained in:
baldurk
2015-01-17 19:09:04 +00:00
parent f607f9832e
commit 82d262ad8b
3 changed files with 57 additions and 0 deletions
+20
View File
@@ -177,7 +177,23 @@ struct GLPipelineState
float SlopeScaledDepthBias;
float OffsetClamp;
bool32 DepthClamp;
bool32 MultisampleEnable;
bool32 SampleShading;
bool32 SampleMask;
uint32_t SampleMaskValue;
bool32 SampleCoverage;
bool32 SampleCoverageInvert;
float SampleCoverageValue;
bool32 SampleAlphaToCoverage;
bool32 SampleAlphaToOne;
float MinSampleShadingRate;
bool32 ProgrammablePointSize;
float PointSize;
float LineWidth;
float PointFadeThreshold;
bool32 PointOriginUpperLeft;
} m_State;
} m_Rasterizer;
@@ -265,11 +281,15 @@ struct GLPipelineState
, LineSmooth(eQuality_DontCare)
, PolySmooth(eQuality_DontCare)
, TexCompression(eQuality_DontCare)
, LineSmoothEnabled(0)
, PolySmoothEnabled(0)
{}
QualityHint Derivatives;
QualityHint LineSmooth;
QualityHint PolySmooth;
QualityHint TexCompression;
bool32 LineSmoothEnabled;
bool32 PolySmoothEnabled;
} m_Hints;
};
+19
View File
@@ -1520,7 +1520,23 @@ void GLReplay::SavePipelineState()
RDCASSERT(rs.FrontFace == eGL_CCW || rs.FrontFace == eGL_CW);
pipe.m_Rasterizer.m_State.FrontCCW = rs.FrontFace == eGL_CCW;
pipe.m_Rasterizer.m_State.DepthClamp = rs.Enabled[GLRenderState::eEnabled_DepthClamp];
pipe.m_Rasterizer.m_State.MultisampleEnable = rs.Enabled[GLRenderState::eEnabled_Multisample];
pipe.m_Rasterizer.m_State.SampleShading = rs.Enabled[GLRenderState::eEnabled_SampleShading];
pipe.m_Rasterizer.m_State.SampleMask = rs.Enabled[GLRenderState::eEnabled_SampleMask];
pipe.m_Rasterizer.m_State.SampleMaskValue = rs.SampleMask[0]; // assume number of samples is less than 32
pipe.m_Rasterizer.m_State.SampleCoverage = rs.Enabled[GLRenderState::eEnabled_SampleCoverage];
pipe.m_Rasterizer.m_State.SampleCoverageInvert = rs.SampleCoverageInvert;
pipe.m_Rasterizer.m_State.SampleCoverageValue = rs.SampleCoverage;
pipe.m_Rasterizer.m_State.SampleAlphaToCoverage = rs.Enabled[GLRenderState::eEnabled_SampleAlphaToCoverage];
pipe.m_Rasterizer.m_State.SampleAlphaToOne = rs.Enabled[GLRenderState::eEnabled_SampleAlphaToOne];
pipe.m_Rasterizer.m_State.MinSampleShadingRate = rs.MinSampleShading;
pipe.m_Rasterizer.m_State.ProgrammablePointSize = rs.Enabled[rs.eEnabled_ProgramPointSize];
pipe.m_Rasterizer.m_State.PointSize = rs.PointSize;
pipe.m_Rasterizer.m_State.LineWidth = rs.LineWidth;
pipe.m_Rasterizer.m_State.PointFadeThreshold = rs.PointFadeThresholdSize;
pipe.m_Rasterizer.m_State.PointOriginUpperLeft = (rs.PointSpriteOrigin != eGL_LOWER_LEFT);
// depth and stencil states
@@ -1705,6 +1721,9 @@ void GLReplay::SavePipelineState()
case eGL_NICEST: pipe.m_Hints.TexCompression = eQuality_Nicest; break;
case eGL_FASTEST: pipe.m_Hints.TexCompression = eQuality_Fastest; break;
}
pipe.m_Hints.LineSmoothEnabled = rs.Enabled[GLRenderState::eEnabled_LineSmooth];
pipe.m_Hints.PolySmoothEnabled = rs.Enabled[GLRenderState::eEnabled_PolySmooth];
}
void GLReplay::FillCBufferValue(WrappedOpenGL &gl, GLuint prog, bool bufferBacked, bool rowMajor,
+18
View File
@@ -191,7 +191,23 @@ namespace renderdoc
public float SlopeScaledDepthBias;
public float OffsetClamp;
public bool DepthClamp;
public bool MultisampleEnable;
public bool SampleShading;
public bool SampleMask;
public UInt32 SampleMaskValue;
public bool SampleCoverage;
public bool SampleCoverageInvert;
public float SampleCoverageValue;
public bool SampleAlphaToCoverage;
public bool SampleAlphaToOne;
public float MinSampleShadingRate;
public bool ProgrammablePointSize;
public float PointSize;
public float LineWidth;
public float PointFadeThreshold;
public bool PointOriginUpperLeft;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public RasterizerState m_State;
@@ -305,6 +321,8 @@ namespace renderdoc
public Int32 LineSmooth;
public Int32 PolySmooth;
public Int32 TexCompression;
public bool LineSmoothEnabled;
public bool PolySmoothEnabled;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public Hints m_Hints;