Skip to content

Commit 7ef73f9

Browse files
committed
Add shader viewer (view only - not edit/debug) using Scintilla widget
1 parent 2e9167b commit 7ef73f9

14 files changed

Lines changed: 1049 additions & 46 deletions

qrenderdoc/Code/CaptureContext.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ EventBrowser *CaptureContext::eventBrowser()
438438

439439
m_EventBrowser = new EventBrowser(this, m_MainWindow);
440440
m_EventBrowser->setObjectName("eventBrowser");
441-
m_EventBrowser->setWindowIcon(*m_Icon);
441+
setupDockWindow(m_EventBrowser);
442442

443443
return m_EventBrowser;
444444
}
@@ -450,7 +450,7 @@ APIInspector *CaptureContext::apiInspector()
450450

451451
m_APIInspector = new APIInspector(this, m_MainWindow);
452452
m_APIInspector->setObjectName("apiInspector");
453-
m_APIInspector->setWindowIcon(*m_Icon);
453+
setupDockWindow(m_APIInspector);
454454

455455
return m_APIInspector;
456456
}
@@ -462,7 +462,7 @@ TextureViewer *CaptureContext::textureViewer()
462462

463463
m_TextureViewer = new TextureViewer(this, m_MainWindow);
464464
m_TextureViewer->setObjectName("textureViewer");
465-
m_TextureViewer->setWindowIcon(*m_Icon);
465+
setupDockWindow(m_TextureViewer);
466466

467467
return m_TextureViewer;
468468
}
@@ -474,7 +474,7 @@ BufferViewer *CaptureContext::meshPreview()
474474

475475
m_MeshPreview = new BufferViewer(this, m_MainWindow);
476476
m_MeshPreview->setObjectName("meshPreview");
477-
m_MeshPreview->setWindowIcon(*m_Icon);
477+
setupDockWindow(m_MeshPreview);
478478

479479
return m_MeshPreview;
480480
}
@@ -486,7 +486,7 @@ PipelineStateViewer *CaptureContext::pipelineViewer()
486486

487487
m_PipelineViewer = new PipelineStateViewer(this, m_MainWindow);
488488
m_PipelineViewer->setObjectName("pipelineViewer");
489-
m_PipelineViewer->setWindowIcon(*m_Icon);
489+
setupDockWindow(m_PipelineViewer);
490490

491491
return m_PipelineViewer;
492492
}
@@ -588,3 +588,8 @@ void CaptureContext::windowClosed(QWidget *window)
588588
else
589589
qCritical() << "Unrecognised window being closed: " << window;
590590
}
591+
592+
void CaptureContext::setupDockWindow(QWidget *shad)
593+
{
594+
shad->setWindowIcon(*m_Icon);
595+
}

qrenderdoc/Code/CaptureContext.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ class CaptureContext
138138
BufferViewer *meshPreview();
139139
PipelineStateViewer *pipelineViewer();
140140
CaptureDialog *captureDialog();
141+
void setupDockWindow(QWidget *shad);
141142

142143
bool hasEventBrowser() { return m_EventBrowser != NULL; }
143144
bool hasAPIInspector() { return m_APIInspector != NULL; }

qrenderdoc/Code/QRDUtils.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,60 @@ QString ToQStr(const ShaderStageType stage, const GraphicsAPI apitype)
178178
return "Unknown";
179179
}
180180

181+
QString TypeString(const SigParameter &sig)
182+
{
183+
QString ret = "";
184+
185+
if(sig.compType == eCompType_Float)
186+
ret += "float";
187+
else if(sig.compType == eCompType_UInt || sig.compType == eCompType_UScaled)
188+
ret += "uint";
189+
else if(sig.compType == eCompType_SInt || sig.compType == eCompType_SScaled)
190+
ret += "int";
191+
else if(sig.compType == eCompType_UNorm)
192+
ret += "unorm float";
193+
else if(sig.compType == eCompType_SNorm)
194+
ret += "snorm float";
195+
else if(sig.compType == eCompType_Depth)
196+
ret += "float";
197+
198+
if(sig.compCount > 1)
199+
ret += QString::number(sig.compCount);
200+
201+
return ret;
202+
}
203+
204+
QString D3DSemanticString(const SigParameter &sig)
205+
{
206+
if(sig.systemValue == eAttr_None)
207+
return ToQStr(sig.semanticIdxName);
208+
209+
QString ret = ToQStr(sig.systemValue);
210+
211+
// need to include the index if it's a system value semantic that's numbered
212+
if(sig.systemValue == eAttr_ColourOutput || sig.systemValue == eAttr_CullDistance ||
213+
sig.systemValue == eAttr_ClipDistance)
214+
ret += QString::number(sig.semanticIndex);
215+
216+
return ret;
217+
}
218+
219+
QString GetComponentString(byte mask)
220+
{
221+
QString ret = "";
222+
223+
if((mask & 0x1) > 0)
224+
ret += "R";
225+
if((mask & 0x2) > 0)
226+
ret += "G";
227+
if((mask & 0x4) > 0)
228+
ret += "B";
229+
if((mask & 0x8) > 0)
230+
ret += "A";
231+
232+
return ret;
233+
}
234+
181235
bool SaveToJSON(QVariantMap &data, QIODevice &f, const char *magicIdentifier, uint32_t magicVersion)
182236
{
183237
// marker that this data is valid

qrenderdoc/Code/QRDUtils.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,45 @@ struct ToStr
252252
return "Unknown";
253253
}
254254

255+
static std::string Get(const SystemAttribute &el)
256+
{
257+
switch(el)
258+
{
259+
case eAttr_None: return "None";
260+
case eAttr_Position: return "Position";
261+
case eAttr_PointSize: return "Point Size";
262+
case eAttr_ClipDistance: return "Clip Distance";
263+
case eAttr_CullDistance: return "Cull Distance";
264+
case eAttr_RTIndex: return "RT Index";
265+
case eAttr_ViewportIndex: return "Viewport Index";
266+
case eAttr_VertexIndex: return "Vertex Index";
267+
case eAttr_PrimitiveIndex: return "Primitive Index";
268+
case eAttr_InstanceIndex: return "Instance Index";
269+
case eAttr_InvocationIndex: return "Invocation Index";
270+
case eAttr_DispatchSize: return "Dispatch Size";
271+
case eAttr_DispatchThreadIndex: return "Dispatch Thread Index";
272+
case eAttr_GroupIndex: return "Group Index";
273+
case eAttr_GroupFlatIndex: return "Group Flat Index";
274+
case eAttr_GroupThreadIndex: return "Group Thread Index";
275+
case eAttr_GSInstanceIndex: return "GS Instance Index";
276+
case eAttr_OutputControlPointIndex: return "Output Control Point Index";
277+
case eAttr_DomainLocation: return "Domain Location";
278+
case eAttr_IsFrontFace: return "Is FrontFace";
279+
case eAttr_MSAACoverage: return "MSAA Coverage";
280+
case eAttr_MSAASamplePosition: return "MSAA Sample Position";
281+
case eAttr_MSAASampleIndex: return "MSAA Sample Index";
282+
case eAttr_PatchNumVertices: return "Patch NumVertices";
283+
case eAttr_OuterTessFactor: return "Outer TessFactor";
284+
case eAttr_InsideTessFactor: return "Inside TessFactor";
285+
case eAttr_ColourOutput: return "Colour Output";
286+
case eAttr_DepthOutput: return "Depth Output";
287+
case eAttr_DepthOutputGreaterEqual: return "Depth Output (GEqual)";
288+
case eAttr_DepthOutputLessEqual: return "Depth Output (LEqual)";
289+
default: break;
290+
}
291+
return "Unknown";
292+
}
293+
255294
static std::string Get(const ShaderBindType &el)
256295
{
257296
switch(el)
@@ -353,6 +392,10 @@ QString RowString(const ShaderVariable &v, uint32_t row);
353392
QString VarString(const ShaderVariable &v);
354393
QString RowTypeString(const ShaderVariable &v);
355394

395+
QString TypeString(const SigParameter &sig);
396+
QString D3DSemanticString(const SigParameter &sig);
397+
QString GetComponentString(byte mask);
398+
356399
struct Formatter
357400
{
358401
static void setParams(int minFigures, int maxFigures, int expNegCutoff, int expPosCutoff);

0 commit comments

Comments
 (0)