|
@@ -22,8 +22,9 @@
|
|
|
|
|
|
#include "platform/platform.h"
|
|
#include "platform/platform.h"
|
|
#include "shaderGen/GLSL/shaderGenGLSL.h"
|
|
#include "shaderGen/GLSL/shaderGenGLSL.h"
|
|
-
|
|
|
|
#include "shaderGen/GLSL/shaderCompGLSL.h"
|
|
#include "shaderGen/GLSL/shaderCompGLSL.h"
|
|
|
|
+#include "shaderGen/featureMgr.h"
|
|
|
|
+#include "gfx/gl/tGL/tGL.h"
|
|
|
|
|
|
|
|
|
|
void ShaderGenPrinterGLSL::printShaderHeader( Stream& stream )
|
|
void ShaderGenPrinterGLSL::printShaderHeader( Stream& stream )
|
|
@@ -64,13 +65,31 @@ void ShaderGenPrinterGLSL::printVertexShaderCloser( Stream& stream )
|
|
|
|
|
|
void ShaderGenPrinterGLSL::printPixelShaderOutputStruct( Stream& stream, const MaterialFeatureData &featureData )
|
|
void ShaderGenPrinterGLSL::printPixelShaderOutputStruct( Stream& stream, const MaterialFeatureData &featureData )
|
|
{
|
|
{
|
|
- // Nothing here
|
|
|
|
|
|
+ // Determine the number of output targets we need
|
|
|
|
+ U32 numMRTs = 0;
|
|
|
|
+ for (U32 i = 0; i < FEATUREMGR->getFeatureCount(); i++)
|
|
|
|
+ {
|
|
|
|
+ const FeatureInfo &info = FEATUREMGR->getAt(i);
|
|
|
|
+ if (featureData.features.hasFeature(*info.type))
|
|
|
|
+ numMRTs |= info.feature->getOutputTargets(featureData);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ WRITESTR(avar("//Fragment shader OUT\r\n"));
|
|
|
|
+ //WRITESTR(avar("out vec4 OUT_col;\r\n", i)); // @todo OUT_col defined on hlslCompat.glsl
|
|
|
|
+ for( U32 i = 1; i < 4; i++ )
|
|
|
|
+ {
|
|
|
|
+ if( numMRTs & 1 << i )
|
|
|
|
+ WRITESTR(avar("out vec4 OUT_col%d;\r\n", i));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ WRITESTR("\r\n");
|
|
|
|
+ WRITESTR("\r\n");
|
|
}
|
|
}
|
|
|
|
|
|
void ShaderGenPrinterGLSL::printPixelShaderCloser( Stream& stream )
|
|
void ShaderGenPrinterGLSL::printPixelShaderCloser( Stream& stream )
|
|
{
|
|
{
|
|
- const char *closer = " OUT_FragColor0 = col;\r\n}\r\n";
|
|
|
|
- stream.write( dStrlen(closer), closer );
|
|
|
|
|
|
+ const char *closer = " \r\n}\r\n";
|
|
|
|
+ stream.write( dStrlen(closer), closer );
|
|
}
|
|
}
|
|
|
|
|
|
void ShaderGenPrinterGLSL::printLine(Stream& stream, const String& line)
|
|
void ShaderGenPrinterGLSL::printLine(Stream& stream, const String& line)
|