diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-07-17 13:43:58 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-07-17 13:43:58 -0700 |
| commit | 0059ccb3997c2af87bc3f76524d8cd4787c20b7e (patch) | |
| tree | 3c07ad5576737423cd407772a7d23748eb67f090 /source/slang/emit.cpp | |
| parent | b4977c1626f9791bc0c84c75e7012ddd7cb40913 (diff) | |
| parent | 453a9ca07417bbc17294267c5e44843d16e93c50 (diff) | |
Merge pull request #111 from tfoleyNV/falcor-shadows-fixes
Falcor shadows fixes
Diffstat (limited to 'source/slang/emit.cpp')
| -rw-r--r-- | source/slang/emit.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/source/slang/emit.cpp b/source/slang/emit.cpp index 0eb371b88..c6efa88dc 100644 --- a/source/slang/emit.cpp +++ b/source/slang/emit.cpp @@ -1041,7 +1041,7 @@ struct EmitVisitor default: switch (samplerStateType->flavor) { - case SamplerStateType::Flavor::SamplerState: Emit("SamplerState"); break; + case SamplerStateType::Flavor::SamplerState: Emit("SamplerState"); break; case SamplerStateType::Flavor::SamplerComparisonState: Emit("SamplerComparisonState"); break; default: assert(!"unreachable"); @@ -1050,7 +1050,15 @@ struct EmitVisitor break; case CodeGenTarget::GLSL: - Emit("sampler"); + switch (samplerStateType->flavor) + { + case SamplerStateType::Flavor::SamplerState: Emit("sampler"); break; + case SamplerStateType::Flavor::SamplerComparisonState: Emit("samplerShadow"); break; + default: + assert(!"unreachable"); + break; + } + break; break; } @@ -1847,6 +1855,15 @@ struct EmitVisitor if (auto baseTextureType = base->Type->As<TextureType>()) { emitGLSLTextureOrTextureSamplerType(baseTextureType, "sampler"); + + if (auto samplerType = callExpr->Arguments[0]->Type.type->As<SamplerStateType>()) + { + if (samplerType->flavor == SamplerStateType::Flavor::SamplerComparisonState) + { + Emit("Shadow"); + } + } + Emit("("); EmitExpr(memberExpr->BaseExpression); Emit(","); @@ -2683,6 +2700,9 @@ struct EmitVisitor #define CASE2(TYPE, HLSL_NAME, GLSL_NAME) \ else if(auto mod_##TYPE = mod.As<TYPE>()) Emit((context->shared->target == CodeGenTarget::GLSL) ? (#GLSL_NAME " ") : (#HLSL_NAME " ")) + #define CASE2_RAW(TYPE, HLSL_NAME, GLSL_NAME) \ + else if(auto mod_##TYPE = mod.As<TYPE>()) Emit((context->shared->target == CodeGenTarget::GLSL) ? (GLSL_NAME) : (HLSL_NAME)) + CASE(RowMajorLayoutModifier, row_major); CASE(ColumnMajorLayoutModifier, column_major); @@ -2703,7 +2723,7 @@ struct EmitVisitor CASE(HLSLLineAdjModifier, lineadj); CASE(HLSLTriangleAdjModifier, triangleadj); - CASE(HLSLLinearModifier, linear); + CASE2_RAW(HLSLLinearModifier, "linear ", ""); CASE(HLSLSampleModifier, sample); CASE(HLSLCentroidModifier, centroid); |
