diff options
| -rw-r--r-- | source/slang/slang-syntax.cpp | 3 | ||||
| -rw-r--r-- | tests/modules/environment.slang | 29 | ||||
| -rw-r--r-- | tests/modules/hit.slang | 24 |
3 files changed, 53 insertions, 3 deletions
diff --git a/source/slang/slang-syntax.cpp b/source/slang/slang-syntax.cpp index d6efb47b3..7fa9e8fc0 100644 --- a/source/slang/slang-syntax.cpp +++ b/source/slang/slang-syntax.cpp @@ -526,9 +526,6 @@ Index getFilterCountImpl(const ReflectClassInfo& clsInfo, MemberFilterStyle filt { SLANG_UNEXPECTED("unhandled type"); } - // Always create builtin types in global AST builder. - if (astBuilder->getSharedASTBuilder()->getInnerASTBuilder() != astBuilder) - return DeclRefType::create(astBuilder->getSharedASTBuilder()->getInnerASTBuilder(), declRef); declRef = createDefaultSubstitutionsIfNeeded(astBuilder, nullptr, declRef); ValNodeDesc nodeDesc = {}; diff --git a/tests/modules/environment.slang b/tests/modules/environment.slang new file mode 100644 index 000000000..915e04c54 --- /dev/null +++ b/tests/modules/environment.slang @@ -0,0 +1,29 @@ +module environment; + +uint lcg(inout uint prev) +{ + const uint LCG_A = 1664525u; + const uint LCG_C = 1013904223u; + prev = (LCG_A * prev + LCG_C); + return prev & 0x00FFFFFF; +} + +public float rnd(inout uint prev) +{ + return ((float) lcg(prev) / (float) 0x01000000); +} + +public struct Environment_sample_data +{ + uint alias; + float q; +}; + +public float3 environment_sample(StructuredBuffer <Environment_sample_data> sample_buffer, inout int seed) +{ + float3 xi; + xi.x = rnd(seed); + xi.y = rnd(seed); + xi.z = rnd(seed); + return xi.z; +} diff --git a/tests/modules/hit.slang b/tests/modules/hit.slang new file mode 100644 index 000000000..d175275b4 --- /dev/null +++ b/tests/modules/hit.slang @@ -0,0 +1,24 @@ +//TEST:COMPILE: tests/modules/environment.slang -o tests/modules/environment.slang-module +//TEST:COMPILE: tests/modules/hit.slang -stage closesthit -entry closesthit -target dxil -o monolithic.dxil + +import environment; + +StructuredBuffer <Environment_sample_data> environment_sample_buffer; + +float3 sample_lights(inout uint seed) +{ + return environment_sample(environment_sample_buffer, seed); +} + +struct RadianceHitInfo +{ + float3 contribution; +}; + +struct Attributes +{ + float2 bary; +}; + +[shader("closesthit")] +void closesthit(inout RadianceHitInfo payload, Attributes attrib) {} |
