-
Notifications
You must be signed in to change notification settings - Fork 15.8k
Open
Labels
HLSLHLSL Language SupportHLSL Language Supportbackend:DirectXbackend:SPIR-Vbot:HLSLmetaissueIssue to collect references to a group of similar or related issues.Issue to collect references to a group of similar or related issues.
Description
- Implement
IgnoreHitclang builtin, - Link
IgnoreHitclang builtin withhlsl_intrinsics.h - Add sema checks for
IgnoreHittoCheckHLSLBuiltinFunctionCallinSemaChecking.cpp - Add codegen for
IgnoreHittoEmitHLSLBuiltinExprinCGBuiltin.cpp - Add codegen tests to
clang/test/CodeGenHLSL/builtins/IgnoreHit.hlsl - Add sema tests to
clang/test/SemaHLSL/BuiltIns/IgnoreHit-errors.hlsl - Create the
int_dx_IgnoreHitintrinsic inIntrinsicsDirectX.td - Create the
DXILOpMappingofint_dx_IgnoreHitto155inDXIL.td - Create the
IgnoreHit.llandIgnoreHit_errors.lltests inllvm/test/CodeGen/DirectX/ - Create the
int_spv_IgnoreHitintrinsic inIntrinsicsSPIRV.td - In SPIRVInstructionSelector.cpp create the
IgnoreHitlowering and map it toint_spv_IgnoreHitinSPIRVInstructionSelector::selectIntrinsic. - Create SPIR-V backend test case in
llvm/test/CodeGen/SPIRV/hlsl-intrinsics/IgnoreHit.ll
DirectX
| DXIL Opcode | DXIL OpName | Shader Model | Shader Stages |
|---|---|---|---|
| 155 | IgnoreHit | 6.3 | ('anyhit',) |
SPIR-V
OpIgnoreIntersectionKHR:
Description:
Reserved.
Capability:
RayTracingKHR
| Word Count | Opcode | Results | Operands |
|---|---|---|---|
| 1 | 4448 |
Test Case(s)
Example 1
//dxc IgnoreHit_test.hlsl -T lib_6_8 -enable-16bit-types -O0
struct [raypayload] RayPayload
{
float4 color : write(caller) : read(anyhit);
float distance : write(caller) : read(anyhit);
};
struct Attributes {
float3 barycentrics;
uint primitiveIndex;
};
[shader("anyhit")]
export void fn(inout RayPayload payload, in Attributes attributes) {
return IgnoreHit();
}SPIRV Example(s):
Example 2
//dxc IgnoreHit_spirv_test.hlsl -T lib_6_8 -E fn -enable-16bit-types -spirv -fspv-target-env=universal1.5 -fcgl -O0
struct [raypayload] RayPayload
{
float4 color : write(caller) : read(anyhit);
float distance : write(caller) : read(anyhit);
};
struct Attributes {
float3 barycentrics;
uint primitiveIndex;
};
[shader("anyhit")]
void fn(inout RayPayload payload, in Attributes attributes) {
return IgnoreHit();
}HLSL:
Called from an any hit shader to reject the hit and end the shader. The hit search continues on without committing the distance and attributes for the current hit. The ReportHit call in the intersection shader, if there is one, will return false. Any modifications made to the ray payload up to this point in the any hit shader are preserved.
Syntax
void IgnoreHit();
Return Value
void
Remarks
This function can be called from the following raytracing shader types:
See also
Metadata
Metadata
Assignees
Labels
HLSLHLSL Language SupportHLSL Language Supportbackend:DirectXbackend:SPIR-Vbot:HLSLmetaissueIssue to collect references to a group of similar or related issues.Issue to collect references to a group of similar or related issues.
Type
Projects
Status
No status