shader: add BVH8 intersections and instance transforms

This commit is contained in:
nmzik committed 2026-10-29 18:37:29 +01:00
1 parent bfd4c34b88
commit 5eab0ec738
21 files changed
+964 -15

No files matched your search

@@ -120,6 +120,8 @@ struct EmitterState {
uint32_t indirect_format_geometry_function = 0;
std::map<std::array<uint32_t, 4>, uint32_t> indirect_buffer_load_functions;
uint32_t bvh_intersect_function = 0;
uint32_t bvh8_result_type = 0;
uint32_t bvh8_intersect_function = 0;
uint32_t bvh_stack_function = 0;
uint32_t gds_variable = 0;
uint32_t gds_length = 0;
@@ -170,6 +172,7 @@ uint32_t TypeBoolVector(EmitterState& state, uint32_t components);
uint32_t TypeU32(EmitterState& state);
uint32_t TypeU64(EmitterState& state);
uint32_t TypeU32Pair(EmitterState& state);
uint32_t TypeBvh8Result(EmitterState& state);
uint32_t TypeI32(EmitterState& state);
uint32_t TypeI32Pair(EmitterState& state);
uint32_t TypeF32(EmitterState& state);
@@ -543,6 +546,10 @@ void EmitProgram(EmitterState& state);
void DefineGetBdaPointer(EmitterState& state);
void DefineIndirectBufferLoads(ValueEmitContext& ctx);
void DefineBvhIntersect(EmitterState& state);
void DefineTrinityBvhIntersect(EmitterState& state);
uint32_t EmitBvhTriangle(EmitterState& state, const std::array<std::array<uint32_t, 3>, 3>& positions,
std::array<uint32_t, 3> origin, std::array<uint32_t, 3> direction,
uint32_t remap, uint32_t triangle_id, uint32_t bary);
void DefineTrinityFunctions(EmitterState& state);
uint32_t GetBdaPointer(EmitterState& state, uint32_t address);