From 61d3e52ad113828a5b8c6d094a05b664bfc06e4e Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Sat, 8 Nov 2014 02:09:14 +0100 Subject: [PATCH] Changes on ShaderGen for generate GLSL shaders. --- Engine/source/shaderGen/HLSL/shaderCompHLSL.cpp | 14 +++++++------- Engine/source/shaderGen/HLSL/shaderCompHLSL.h | 6 +++--- Engine/source/shaderGen/shaderComp.h | 5 +++-- Engine/source/shaderGen/shaderGen.cpp | 13 +++++++------ 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/Engine/source/shaderGen/HLSL/shaderCompHLSL.cpp b/Engine/source/shaderGen/HLSL/shaderCompHLSL.cpp index 7830e76a0..2d7b80bc9 100644 --- a/Engine/source/shaderGen/HLSL/shaderCompHLSL.cpp +++ b/Engine/source/shaderGen/HLSL/shaderCompHLSL.cpp @@ -203,7 +203,7 @@ void ShaderConnectorHLSL::reset() mCurTexElem = 0; } -void ShaderConnectorHLSL::print( Stream &stream ) +void ShaderConnectorHLSL::print( Stream &stream, bool isVertexShader ) { const char * header = "struct "; const char * header2 = "\r\n{\r\n"; @@ -269,7 +269,7 @@ void ParamsDefHLSL::assignConstantNumbers() } } -void VertexParamsDefHLSL::print( Stream &stream ) +void VertexParamsDefHLSL::print( Stream &stream, bool isVerterShader ) { assignConstantNumbers(); @@ -305,7 +305,7 @@ void VertexParamsDefHLSL::print( Stream &stream ) stream.write( dStrlen(closer), closer ); } -void PixelParamsDefHLSL::print( Stream &stream ) +void PixelParamsDefHLSL::print( Stream &stream, bool isVerterShader ) { assignConstantNumbers(); @@ -326,18 +326,18 @@ void PixelParamsDefHLSL::print( Stream &stream ) if( var->sampler ) { - dSprintf( (char*)varNum, sizeof(varNum), "register(S%d)", var->constNum ); + dSprintf( (char*)varNum, sizeof(varNum), ": register(S%d)", var->constNum ); } else { - dSprintf( (char*)varNum, sizeof(varNum), "register(C%d)", var->constNum ); + dSprintf( (char*)varNum, sizeof(varNum), ": register(C%d)", var->constNum ); } U8 output[256]; if (var->arraySize <= 1) - dSprintf( (char*)output, sizeof(output), "uniform %-9s %-15s : %s", var->type, var->name, varNum ); + dSprintf( (char*)output, sizeof(output), "uniform %-9s %-15s %s", var->type, var->name, varNum ); else - dSprintf( (char*)output, sizeof(output), "uniform %-9s %s[%d] : %s", var->type, var->name, var->arraySize, varNum ); + dSprintf( (char*)output, sizeof(output), "uniform %-9s %s[%d] %s", var->type, var->name, var->arraySize, varNum ); WRITESTR( (char*) output ); } diff --git a/Engine/source/shaderGen/HLSL/shaderCompHLSL.h b/Engine/source/shaderGen/HLSL/shaderCompHLSL.h index e24ed8992..0a3ead4ed 100644 --- a/Engine/source/shaderGen/HLSL/shaderCompHLSL.h +++ b/Engine/source/shaderGen/HLSL/shaderCompHLSL.h @@ -45,7 +45,7 @@ public: virtual void reset(); virtual void sortVars(); - virtual void print( Stream &stream ); + virtual void print( Stream &stream, bool isVertexShader ); }; @@ -59,14 +59,14 @@ protected: class VertexParamsDefHLSL : public ParamsDefHLSL { public: - virtual void print( Stream &stream ); + virtual void print( Stream &stream, bool isVerterShader ); }; class PixelParamsDefHLSL : public ParamsDefHLSL { public: - virtual void print( Stream &stream ); + virtual void print( Stream &stream, bool isVerterShader ); }; #endif // _SHADERCOMP_HLSL_H_ \ No newline at end of file diff --git a/Engine/source/shaderGen/shaderComp.h b/Engine/source/shaderGen/shaderComp.h index bae47112e..e8903e613 100644 --- a/Engine/source/shaderGen/shaderComp.h +++ b/Engine/source/shaderGen/shaderComp.h @@ -43,7 +43,8 @@ class ShaderComponent public: virtual ~ShaderComponent() {} - virtual void print( Stream &stream ){}; + virtual void print( Stream &stream, bool isVerterShader ){}; + virtual void printOnMain( Stream &stream, bool isVerterShader ){}; }; @@ -86,7 +87,7 @@ public: virtual void reset() = 0; virtual void sortVars() = 0; - virtual void print( Stream &stream ) = 0; + virtual void print( Stream &stream, bool isVerterShader ) = 0; }; /// This is to provide common functionalty needed by vertex and pixel main defs diff --git a/Engine/source/shaderGen/shaderGen.cpp b/Engine/source/shaderGen/shaderGen.cpp index 5cd18f10c..17edefa3a 100644 --- a/Engine/source/shaderGen/shaderGen.cpp +++ b/Engine/source/shaderGen/shaderGen.cpp @@ -409,13 +409,13 @@ void ShaderGen::_printVertShader( Stream &stream ) _printFeatureList(stream); // print out structures - mComponents[C_VERT_STRUCT]->print( stream ); - mComponents[C_CONNECTOR]->print( stream ); + mComponents[C_VERT_STRUCT]->print( stream, true ); + mComponents[C_CONNECTOR]->print( stream, true ); mPrinter->printMainComment(stream); - mComponents[C_VERT_MAIN]->print( stream ); - + mComponents[C_VERT_MAIN]->print( stream, true ); + mComponents[C_VERT_STRUCT]->printOnMain( stream, true ); // print out the function _printFeatures( stream ); @@ -430,12 +430,13 @@ void ShaderGen::_printPixShader( Stream &stream ) _printDependencies(stream); // TODO: Split into vert and pix dependencies? _printFeatureList(stream); - mComponents[C_CONNECTOR]->print( stream ); + mComponents[C_CONNECTOR]->print( stream, false ); mPrinter->printPixelShaderOutputStruct(stream, mFeatureData); mPrinter->printMainComment(stream); - mComponents[C_PIX_MAIN]->print( stream ); + mComponents[C_PIX_MAIN]->print( stream, false ); + mComponents[C_CONNECTOR]->printOnMain( stream, false ); // print out the function _printFeatures( stream );