Commit c8eadba6 authored by hybrid's avatar hybrid

Add file debug for HLSL pixel shader for NewerCookie.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2134 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 0d8210fa
...@@ -64,7 +64,8 @@ CD3D9HLSLMaterialRenderer::CD3D9HLSLMaterialRenderer(IDirect3DDevice9* d3ddev, ...@@ -64,7 +64,8 @@ CD3D9HLSLMaterialRenderer::CD3D9HLSLMaterialRenderer(IDirect3DDevice9* d3ddev,
outMaterialTypeNr = Driver->addMaterialRenderer(this); outMaterialTypeNr = Driver->addMaterialRenderer(this);
} }
//! Destructor
//! Destructor
CD3D9HLSLMaterialRenderer::~CD3D9HLSLMaterialRenderer() CD3D9HLSLMaterialRenderer::~CD3D9HLSLMaterialRenderer()
{ {
if (VSConstantsTable) if (VSConstantsTable)
...@@ -85,10 +86,9 @@ bool CD3D9HLSLMaterialRenderer::createHLSLVertexShader(const char* vertexShaderP ...@@ -85,10 +86,9 @@ bool CD3D9HLSLMaterialRenderer::createHLSLVertexShader(const char* vertexShaderP
LPD3DXBUFFER buffer = 0; LPD3DXBUFFER buffer = 0;
LPD3DXBUFFER errors = 0; LPD3DXBUFFER errors = 0;
#ifdef _IRR_D3D_NO_SHADER_DEBUGGING #ifdef _IRR_D3D_NO_SHADER_DEBUGGING
// compile without debug info // compile without debug info
HRESULT h = stubD3DXCompileShader( HRESULT h = stubD3DXCompileShader(
vertexShaderProgram, vertexShaderProgram,
strlen(vertexShaderProgram), strlen(vertexShaderProgram),
...@@ -101,7 +101,7 @@ bool CD3D9HLSLMaterialRenderer::createHLSLVertexShader(const char* vertexShaderP ...@@ -101,7 +101,7 @@ bool CD3D9HLSLMaterialRenderer::createHLSLVertexShader(const char* vertexShaderP
&errors, &errors,
&VSConstantsTable); &VSConstantsTable);
#else #else
// compile shader and emitt some debug informations to // compile shader and emitt some debug informations to
// make it possible to debug the shader in visual studio // make it possible to debug the shader in visual studio
...@@ -127,7 +127,7 @@ bool CD3D9HLSLMaterialRenderer::createHLSLVertexShader(const char* vertexShaderP ...@@ -127,7 +127,7 @@ bool CD3D9HLSLMaterialRenderer::createHLSLVertexShader(const char* vertexShaderP
&errors, &errors,
&VSConstantsTable); &VSConstantsTable);
#endif #endif
if (FAILED(h)) if (FAILED(h))
{ {
...@@ -173,6 +173,9 @@ bool CD3D9HLSLMaterialRenderer::createHLSLPixelShader(const char* pixelShaderPro ...@@ -173,6 +173,9 @@ bool CD3D9HLSLMaterialRenderer::createHLSLPixelShader(const char* pixelShaderPro
LPD3DXBUFFER buffer = 0; LPD3DXBUFFER buffer = 0;
LPD3DXBUFFER errors = 0; LPD3DXBUFFER errors = 0;
#ifdef _IRR_D3D_NO_SHADER_DEBUGGING
// compile without debug info
HRESULT h = stubD3DXCompileShader( HRESULT h = stubD3DXCompileShader(
pixelShaderProgram, pixelShaderProgram,
strlen(pixelShaderProgram), strlen(pixelShaderProgram),
...@@ -185,6 +188,34 @@ bool CD3D9HLSLMaterialRenderer::createHLSLPixelShader(const char* pixelShaderPro ...@@ -185,6 +188,34 @@ bool CD3D9HLSLMaterialRenderer::createHLSLPixelShader(const char* pixelShaderPro
&errors, &errors,
&PSConstantsTable); &PSConstantsTable);
#else
// compile shader and emitt some debug informations to
// make it possible to debug the shader in visual studio
static int irr_dbg_hlsl_file_nr = 0;
++irr_dbg_hlsl_file_nr;
char tmp[32];
sprintf(tmp, "irr_d3d9_dbg_hlsl_%d.psh", irr_dbg_hlsl_file_nr);
FILE* f = fopen(tmp, "wb");
fwrite(pixelShaderProgram, strlen(pixelShaderProgram), 1, f);
fflush(f);
fclose(f);
HRESULT h = stubD3DXCompileShaderFromFile(
tmp,
0, // macros
0, // no includes
shaderEntryPointName,
shaderTargetName,
D3DXSHADER_DEBUG | D3DXSHADER_SKIPOPTIMIZATION,
&buffer,
&errors,
&PSConstantsTable);
#endif
if (FAILED(h)) if (FAILED(h))
{ {
os::Printer::log("HLSL pixel shader compilation failed:"); os::Printer::log("HLSL pixel shader compilation failed:");
...@@ -250,6 +281,7 @@ bool CD3D9HLSLMaterialRenderer::setVariable(bool vertexShader, const c8* name, ...@@ -250,6 +281,7 @@ bool CD3D9HLSLMaterialRenderer::setVariable(bool vertexShader, const c8* name,
return true; return true;
} }
bool CD3D9HLSLMaterialRenderer::OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype) bool CD3D9HLSLMaterialRenderer::OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype)
{ {
if (VSConstantsTable) if (VSConstantsTable)
...@@ -258,6 +290,7 @@ bool CD3D9HLSLMaterialRenderer::OnRender(IMaterialRendererServices* service, E_V ...@@ -258,6 +290,7 @@ bool CD3D9HLSLMaterialRenderer::OnRender(IMaterialRendererServices* service, E_V
return CD3D9ShaderMaterialRenderer::OnRender(service, vtxtype); return CD3D9ShaderMaterialRenderer::OnRender(service, vtxtype);
} }
void CD3D9HLSLMaterialRenderer::printHLSLVariables(LPD3DXCONSTANTTABLE table) void CD3D9HLSLMaterialRenderer::printHLSLVariables(LPD3DXCONSTANTTABLE table)
{ {
// currently we only support top level parameters. // currently we only support top level parameters.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment