SHOW:
|
|
- or go back to the newest paste.
| 1 | void ShaderGenPrinterGLSL::printPixelShaderOutputStruct( Stream& stream, const MaterialFeatureData &featureData ) | |
| 2 | {
| |
| 3 | // Determine the number of output targets we need | |
| 4 | U32 numMRTs = 0; | |
| 5 | for (U32 i = 0; i < FEATUREMGR->getFeatureCount(); i++) | |
| 6 | {
| |
| 7 | const FeatureInfo &info = FEATUREMGR->getAt(i); | |
| 8 | if (featureData.features.hasFeature(*info.type)) | |
| 9 | numMRTs |= info.feature->getOutputTargets(featureData); | |
| 10 | } | |
| 11 | ||
| 12 | - | WRITESTR("layout(location = 0) out vec4 col;\r\n");
|
| 12 | + | WRITESTR("layout(location = 0) out vec4 OUT_FragColor0;\r\n");
|
| 13 | for (U32 i = 1; i < 4; i++) | |
| 14 | {
| |
| 15 | - | if (numMRTs & 1 << i) |
| 15 | + | if (numMRTs & 1 << i) {
|
| 16 | - | WRITESTR(avar("layout(location = %d) out vec4 col%d;\r\n", i, i));
|
| 16 | + | WRITESTR(avar("layout(location = %d) out vec4 OUT_FragColor%d;\r\n", i, i));
|
| 17 | extraRTs[i - 1] = true; | |
| 18 | } | |
| 19 | } | |
| 20 | WRITESTR("\r\n");
| |
| 21 | WRITESTR("\r\n");
| |
| 22 | } | |
| 23 | ||
| 24 | void ShaderGenPrinterGLSL::printPixelShaderCloser( Stream& stream ) | |
| 25 | - | } |
| 25 | + | |
| 26 | WRITESTR(" OUT_FragColor0 = col;\r\n");
| |
| 27 | for (U32 i = 1; i < 4; i++) | |
| 28 | {
| |
| 29 | if (extraRTs[i - 1]) | |
| 30 | WRITESTR(avar(" OUT_FragColor%d = col%d;\r\n", i, i));
| |
| 31 | } | |
| 32 | ||
| 33 | WRITESTR("}\r\n");
| |
| 34 | } | |
| 35 | ||
| 36 | ||
| 37 | //In the header file | |
| 38 | class ShaderGenPrinterGLSL : public ShaderGenPrinter | |
| 39 | {
| |
| 40 | bool extraRTs[3]; | |
| 41 | ||
| 42 | public: | |
| 43 | ShaderGenPrinterGLSL() { for (int i = 0; i < 3; i++) extraRTs[i] = false; }
| |
| 44 | ||
| 45 | // ShaderGenPrinter | |
| 46 | virtual void printShaderHeader(Stream& stream); | |
| 47 | virtual void printMainComment(Stream& stream); | |
| 48 | virtual void printVertexShaderCloser(Stream& stream); | |
| 49 | virtual void printPixelShaderOutputStruct(Stream& stream, const MaterialFeatureData &featureData); | |
| 50 | virtual void printPixelShaderCloser(Stream& stream); | |
| 51 | virtual void printLine(Stream& stream, const String& line); | |
| 52 | }; |