Guest User

Untitled

a guest
Feb 11th, 2025
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #include "/Engine/Private/Common.ush"
  2. #include "/Engine/Private/RayTracing/RayTracingCommon.ush"
  3. #include "/Engine/Private/RayTracing/RayTracingHitGroupCommon.ush"
  4.  
  5. RWTexture2D<float4> outTex;
  6. RaytracingAccelerationStructure TLAS;
  7.  
  8. RAY_TRACING_ENTRY_RAYGEN(RayTraceTestRGS)
  9. {
  10. // reconstruct camera direction with a small (far) device z
  11. uint2 PixelCoord = DispatchRaysIndex().xy + View.ViewRectMin.xy;
  12. float3 WorldPosition;
  13. float3 CameraDirection;
  14. ReconstructTranslatedWorldPositionAndCameraDirectionFromDeviceZ(PixelCoord, 0.1f, WorldPosition, CameraDirection);
  15.  
  16. // setup ray, simply shoot a long distance
  17. FRayDesc Ray;
  18. Ray.Origin = WorldPosition;
  19. Ray.Direction = CameraDirection;
  20. Ray.TMin = 0.0f;
  21. Ray.TMax = 9999;
  22.  
  23. // SETTINGS
  24. //const uint InstanceInclusionMask = RAY_TRACING_MASK_OPAQUE;
  25. const uint InstanceInclusionMask = RAY_TRACING_MASK_ALL;
  26. const bool bEnableSkyLightContribution = false;
  27. const bool bIgnoreTranslucentMaterials = false;
  28. //uint RayFlags = RAY_FLAG_FORCE_OPAQUE | RAY_FLAG_CULL_BACK_FACING_TRIANGLES;
  29. uint RayFlags = RAY_FLAG_CULL_BACK_FACING_TRIANGLES;
  30. FRayCone RayCone = (FRayCone)0;
  31.  
  32.  
  33. //Payload Struct
  34. FPackedMaterialClosestHitPayload Payload = (FPackedMaterialClosestHitPayload) 0;
  35. FMaterialClosestHitPayload UnpackedPayload = (FMaterialClosestHitPayload) 0;
  36.  
  37. //TraceRay
  38. TraceMaterialRayPacked(
  39. Payload,
  40. TLAS,
  41. RayFlags,
  42. InstanceInclusionMask,
  43. Ray,
  44. RayCone,
  45. bEnableSkyLightContribution);
  46.  
  47. UnpackedPayload = UnpackRayTracingPayload(Payload, Ray);
  48.  
  49. if (UnpackedPayload.IsHit())
  50. outTex[PixelCoord] = UnpackedPayload.HitT * 0.001f);
  51. else
  52. outTex[PixelCoord] = 0.0f;
  53. }
  54.  
  55. [shader("miss")]
  56. void RayTraceTestMS(inout FPackedMaterialClosestHitPayload data)
  57. {
  58. data.SetMiss();
  59. }
  60.  
  61. RAY_TRACING_ENTRY_CLOSEST_HIT(RayTraceTestCHS,
  62. FPackedMaterialClosestHitPayload, Payload,
  63. FRayTracingIntersectionAttributes, Attributes)
  64. {
  65. Payload.HitT = RayTCurrent();
  66. }
Advertisement
Add Comment
Please, Sign In to add comment