Skip to content

Commit

Permalink
shader compiation fixes with -Od option
Browse files Browse the repository at this point in the history
turanszkij committed Jan 29, 2025
1 parent 2aa34e5 commit 098e7b5
Showing 21 changed files with 36 additions and 0 deletions.
1 change: 1 addition & 0 deletions WickedEngine/shaders/ShaderInterop_BVH.h
Original file line number Diff line number Diff line change
@@ -40,6 +40,7 @@ struct BVHPrimitive
PrimitiveID primitiveID()
{
PrimitiveID prim;
prim.init();
prim.unpack2(packed_prim);
return prim;
}
1 change: 1 addition & 0 deletions WickedEngine/shaders/bvh_primitivesCS.hlsl
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex)
return;

PrimitiveID prim;
prim.init();
prim.primitiveIndex = DTid.x;
prim.instanceIndex = push.instanceIndex;
prim.subsetIndex = push.subsetIndex;
1 change: 1 addition & 0 deletions WickedEngine/shaders/ddgi_raytraceCS.hlsl
Original file line number Diff line number Diff line change
@@ -108,6 +108,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint groupIn
hit_depth = q.CommittedRayT();

PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
8 changes: 8 additions & 0 deletions WickedEngine/shaders/globals.hlsli
Original file line number Diff line number Diff line change
@@ -593,6 +593,14 @@ struct PrimitiveID
uint subsetIndex;
bool maybe_clustered;

inline void init()
{
primitiveIndex = 0;
instanceIndex = 0;
subsetIndex = 0;
maybe_clustered = 0;
}

// These packing methods require meshlet data, and pack into 32 bits:
inline uint pack()
{
1 change: 1 addition & 0 deletions WickedEngine/shaders/hairparticlePS_prepass.hlsl
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@ uint main(VertexToPixel input, out uint coverage : SV_Coverage) : SV_Target
coverage = AlphaToCoverage(alpha, material.GetAlphaTest(), input.pos);

PrimitiveID prim;
prim.init();
prim.primitiveIndex = input.primitiveID;
prim.instanceIndex = xHairInstanceIndex;
prim.subsetIndex = 0;
1 change: 1 addition & 0 deletions WickedEngine/shaders/impostorPS_prepass.hlsl
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ uint main(VSOut input, out uint coverage : SV_Coverage) : SV_Target
coverage = AlphaToCoverage(alpha, 0.75, input.pos);

PrimitiveID prim;
prim.init();
prim.primitiveIndex = input.primitiveID;
prim.instanceIndex = GetScene().impostorInstanceOffset;
prim.subsetIndex = 0;
1 change: 1 addition & 0 deletions WickedEngine/shaders/objectHF.hlsli
Original file line number Diff line number Diff line change
@@ -1090,6 +1090,7 @@ float4 main(PixelInput input, in bool is_frontface : SV_IsFrontFace APPEND_COVER
#ifdef PREPASS
#ifndef DEPTHONLY
PrimitiveID prim;
prim.init();
prim.primitiveIndex = primitiveID;
prim.instanceIndex = input.GetInstanceIndex();
prim.subsetIndex = push.geometryIndex - meshinstance.geometryOffset;
3 changes: 3 additions & 0 deletions WickedEngine/shaders/raytraceCS.hlsl
Original file line number Diff line number Diff line change
@@ -93,6 +93,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex)
while (q.Proceed())
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
@@ -156,6 +157,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex)
ray.Origin = q.WorldRayOrigin() + q.WorldRayDirection() * q.CommittedRayT();

PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
@@ -337,6 +339,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex)
while (q.Proceed())
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
3 changes: 3 additions & 0 deletions WickedEngine/shaders/renderlightmapPS.hlsl
Original file line number Diff line number Diff line change
@@ -71,6 +71,7 @@ void BakeryPixelPush(inout float3 P, in float3 N, in float2 UV, inout RNG rng, i
hit_pos = q.WorldRayOrigin() + q.WorldRayDirection() * q.CommittedRayT();

PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
@@ -275,6 +276,7 @@ float4 main(Input input) : SV_TARGET
while (q.Proceed())
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
@@ -354,6 +356,7 @@ float4 main(Input input) : SV_TARGET
ray.Origin = q.WorldRayOrigin() + q.WorldRayDirection() * q.CommittedRayT();

PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
2 changes: 2 additions & 0 deletions WickedEngine/shaders/rtaoCS.hlsl
Original file line number Diff line number Diff line change
@@ -38,6 +38,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint3 GTid :
RayDesc ray = CreateCameraRay(clipspace);

PrimitiveID prim;
prim.init();
prim.unpack(primitiveID);

Surface surface;
@@ -70,6 +71,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint3 GTid :
while (q.Proceed())
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
2 changes: 2 additions & 0 deletions WickedEngine/shaders/rtdiffuseCS.hlsl
Original file line number Diff line number Diff line change
@@ -78,6 +78,7 @@ void main(uint2 DTid : SV_DispatchThreadID)
while (q.Proceed())
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
@@ -129,6 +130,7 @@ void main(uint2 DTid : SV_DispatchThreadID)
{
// closest hit:
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
2 changes: 2 additions & 0 deletions WickedEngine/shaders/rtreflectionCS.hlsl
Original file line number Diff line number Diff line change
@@ -80,6 +80,7 @@ void main(uint2 DTid : SV_DispatchThreadID)
while (q.Proceed())
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
@@ -129,6 +130,7 @@ void main(uint2 DTid : SV_DispatchThreadID)
{
// closest hit:
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
2 changes: 2 additions & 0 deletions WickedEngine/shaders/rtreflectionLIB.hlsl
Original file line number Diff line number Diff line change
@@ -90,6 +90,7 @@ void RTReflection_Raygen()
void RTReflection_ClosestHit(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr)
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = PrimitiveIndex();
prim.instanceIndex = InstanceID();
prim.subsetIndex = GeometryIndex();
@@ -167,6 +168,7 @@ void RTReflection_ClosestHit(inout RayPayload payload, in BuiltInTriangleInterse
void RTReflection_AnyHit(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr)
{
PrimitiveID prim;
prim.init();
prim.primitiveIndex = PrimitiveIndex();
prim.instanceIndex = InstanceID();
prim.subsetIndex = GeometryIndex();
1 change: 1 addition & 0 deletions WickedEngine/shaders/screenspaceshadowCS.hlsl
Original file line number Diff line number Diff line change
@@ -217,6 +217,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint3 GTid :
if(q.CandidateType() != CANDIDATE_NON_OPAQUE_TRIANGLE) // see xbox coherent ray traversal documentation
continue;
PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CandidatePrimitiveIndex();
prim.instanceIndex = q.CandidateInstanceID();
prim.subsetIndex = q.CandidateGeometryIndex();
1 change: 1 addition & 0 deletions WickedEngine/shaders/surfel_coverageCS.hlsl
Original file line number Diff line number Diff line change
@@ -65,6 +65,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex, uin
uint primitiveID = texture_primitiveID[pixel];

PrimitiveID prim;
prim.init();
prim.unpack(primitiveID);

Surface surface;
1 change: 1 addition & 0 deletions WickedEngine/shaders/surfel_raytraceCS.hlsl
Original file line number Diff line number Diff line change
@@ -91,6 +91,7 @@ void main(uint3 DTid : SV_DispatchThreadID)
hit_depth = q.CommittedRayT();

PrimitiveID prim;
prim.init();
prim.primitiveIndex = q.CommittedPrimitiveIndex();
prim.instanceIndex = q.CommittedInstanceID();
prim.subsetIndex = q.CommittedGeometryIndex();
1 change: 1 addition & 0 deletions WickedEngine/shaders/surfel_updateCS.hlsl
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@ void main(uint3 DTid : SV_DispatchThreadID)
float radius = SURFEL_MAX_RADIUS;

PrimitiveID prim;
prim.init();
prim.unpack2(surfel_data.primitiveID);

Surface surface;
1 change: 1 addition & 0 deletions WickedEngine/shaders/visibility_resolveCS.hlsl
Original file line number Diff line number Diff line change
@@ -70,6 +70,7 @@ void main(uint2 Gid : SV_GroupID, uint groupIndex : SV_GroupIndex)
if (any(primitiveID))
{
PrimitiveID prim;
prim.init();
prim.unpack(primitiveID);

Surface surface;
1 change: 1 addition & 0 deletions WickedEngine/shaders/visibility_shadeCS.hlsl
Original file line number Diff line number Diff line change
@@ -43,6 +43,7 @@ void main(uint Gid : SV_GroupID, uint groupIndex : SV_GroupIndex)

uint primitiveID = texture_primitiveID[pixel];
PrimitiveID prim;
prim.init();
prim.unpack(primitiveID);

Surface surface;
1 change: 1 addition & 0 deletions WickedEngine/shaders/visibility_surfaceCS.hlsl
Original file line number Diff line number Diff line change
@@ -42,6 +42,7 @@ void main(uint Gid : SV_GroupID, uint groupIndex : SV_GroupIndex)

uint primitiveID = texture_primitiveID[pixel];
PrimitiveID prim;
prim.init();
prim.unpack(primitiveID);

Surface surface;
1 change: 1 addition & 0 deletions WickedEngine/shaders/visibility_velocityCS.hlsl
Original file line number Diff line number Diff line change
@@ -29,6 +29,7 @@ void main(uint2 DTid : SV_DispatchThreadID)
if (any(primitiveID))
{
PrimitiveID prim;
prim.init();
prim.unpack(primitiveID);

Surface surface;

0 comments on commit 098e7b5

Please sign in to comment.