diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-03-24 21:27:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-24 21:27:22 +0300 |
commit | 0d4ce028bf8b8a94d325dc1e1c20446153ba19c4 (patch) | |
tree | 797c5e9ac4324cdfd68dfac1c14bed7e99ba9776 | |
parent | a3996eccf30322516432c5dedb9299cf30ba8cf7 (diff) | |
parent | 17c52990d54dfcc7ee21590dc59207c233562787 (diff) |
Merge pull request #1903 from KhronosGroup/fix-1900sdk-1.3.211.0sdk-1.3.211
MSL: Fix goofy bugs in ray query.
-rw-r--r-- | reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp | 10 | ||||
-rw-r--r-- | reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp | 10 | ||||
-rw-r--r-- | spirv_msl.cpp | 10 |
3 files changed, 15 insertions, 15 deletions
diff --git a/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp b/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp index 0a94deb5..35539b2c 100644 --- a/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp +++ b/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp @@ -19,19 +19,19 @@ struct Params float thit; }; -kernel void main0(constant Params& _18 [[buffer(1)]], acceleration_structure<instancing> AS0 [[buffer(0)]], acceleration_structure<instancing> AS1 [[buffer(2)]]) +kernel void main0(constant Params& _18 [[buffer(1)]], raytracing::acceleration_structure<raytracing::instancing> AS0 [[buffer(0)]], raytracing::acceleration_structure<raytracing::instancing> AS1 [[buffer(2)]]) { - intersection_query<instancing, triangle_data> q; + raytracing::intersection_query<raytracing::instancing, raytracing::triangle_data> q; q.reset(ray(_18.origin, _18.dir, _18.tmin, _18.tmax), AS0, intersection_params()); - intersection_query<instancing, triangle_data> q2[2]; + raytracing::intersection_query<raytracing::instancing, raytracing::triangle_data> q2[2]; q2[1].reset(ray(_18.origin, _18.dir, _18.tmin, _18.tmax), AS1, intersection_params()); bool _63 = q.next(); q2[0].abort(); q.commit_bounding_box_intersection(_18.thit); q2[1].commit_triangle_intersection(); float _71 = q.get_ray_min_distance(); - float3 _74 = q.get_world_space_ray_origin(); - float3 _75 = q.get_world_space_ray_direction(); + float3 _74 = q.get_world_space_ray_direction(); + float3 _75 = q.get_world_space_ray_origin(); uint _80 = uint(q2[1].get_committed_intersection_type()); uint _83 = uint(q2[0].get_candidate_intersection_type()) - 1; bool _85 = q2[1].is_candidate_non_opaque_bounding_box(); diff --git a/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp b/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp index 64c993d4..dde7f47b 100644 --- a/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp +++ b/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp @@ -19,11 +19,11 @@ struct Params float thit; }; -kernel void main0(constant Params& _18 [[buffer(1)]], acceleration_structure<instancing> AS0 [[buffer(0)]], acceleration_structure<instancing> AS1 [[buffer(2)]]) +kernel void main0(constant Params& _18 [[buffer(1)]], raytracing::acceleration_structure<raytracing::instancing> AS0 [[buffer(0)]], raytracing::acceleration_structure<raytracing::instancing> AS1 [[buffer(2)]]) { - intersection_query<instancing, triangle_data> q; + raytracing::intersection_query<raytracing::instancing, raytracing::triangle_data> q; q.reset(ray(_18.origin, _18.dir, _18.tmin, _18.tmax), AS0, intersection_params()); - intersection_query<instancing, triangle_data> q2[2]; + raytracing::intersection_query<raytracing::instancing, raytracing::triangle_data> q2[2]; q2[1].reset(ray(_18.origin, _18.dir, _18.tmin, _18.tmax), AS1, intersection_params()); bool _63 = q.next(); bool res = _63; @@ -32,9 +32,9 @@ kernel void main0(constant Params& _18 [[buffer(1)]], acceleration_structure<ins q2[1].commit_triangle_intersection(); float _71 = q.get_ray_min_distance(); float fval = _71; - float3 _74 = q.get_world_space_ray_origin(); + float3 _74 = q.get_world_space_ray_direction(); float3 fvals = _74; - float3 _75 = q.get_world_space_ray_direction(); + float3 _75 = q.get_world_space_ray_origin(); fvals = _75; uint _80 = uint(q2[1].get_committed_intersection_type()); uint type = _80; diff --git a/spirv_msl.cpp b/spirv_msl.cpp index c7ea9340..04555f43 100644 --- a/spirv_msl.cpp +++ b/spirv_msl.cpp @@ -8532,8 +8532,8 @@ void CompilerMSL::emit_instruction(const Instruction &instruction) #define MSL_RAY_QUERY_IS_OP2(op, msl_op) MSL_RAY_QUERY_OP_INNER2(op, .is, msl_op) MSL_RAY_QUERY_GET_OP(RayTMin, ray_min_distance); - MSL_RAY_QUERY_GET_OP(WorldRayOrigin, world_space_ray_direction); - MSL_RAY_QUERY_GET_OP(WorldRayDirection, world_space_ray_origin); + MSL_RAY_QUERY_GET_OP(WorldRayOrigin, world_space_ray_origin); + MSL_RAY_QUERY_GET_OP(WorldRayDirection, world_space_ray_direction); MSL_RAY_QUERY_GET_OP2(IntersectionInstanceId, instance_id); MSL_RAY_QUERY_GET_OP2(IntersectionInstanceCustomIndex, user_instance_id); MSL_RAY_QUERY_GET_OP2(IntersectionBarycentrics, triangle_barycentric_coord); @@ -13603,14 +13603,14 @@ string CompilerMSL::type_to_glsl(const SPIRType &type, uint32_t id) break; case SPIRType::AccelerationStructure: if (msl_options.supports_msl_version(2, 4)) - type_name = "acceleration_structure<instancing>"; + type_name = "raytracing::acceleration_structure<raytracing::instancing>"; else if (msl_options.supports_msl_version(2, 3)) - type_name = "instance_acceleration_structure"; + type_name = "raytracing::instance_acceleration_structure"; else SPIRV_CROSS_THROW("Acceleration Structure Type is supported in MSL 2.3 and above."); break; case SPIRType::RayQuery: - return "intersection_query<instancing, triangle_data>"; + return "raytracing::intersection_query<raytracing::instancing, raytracing::triangle_data>"; default: return "unknown_type"; |