Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "/Engine/Private/Common.ush"
- #include "/Engine/Private/RayTracing/RayTracingCommon.ush"
- #include "/Engine/Private/RayTracing/RayTracingHitGroupCommon.ush"
- RWTexture2D<float4> outTex;
- RaytracingAccelerationStructure TLAS;
- RAY_TRACING_ENTRY_RAYGEN(RayTraceTestRGS)
- {
- // reconstruct camera direction with a small (far) device z
- uint2 PixelCoord = DispatchRaysIndex().xy + View.ViewRectMin.xy;
- float3 WorldPosition;
- float3 CameraDirection;
- ReconstructTranslatedWorldPositionAndCameraDirectionFromDeviceZ(PixelCoord, 0.1f, WorldPosition, CameraDirection);
- // setup ray, simply shoot a long distance
- FRayDesc Ray;
- Ray.Origin = WorldPosition;
- Ray.Direction = CameraDirection;
- Ray.TMin = 0.0f;
- Ray.TMax = 9999;
- //Payload Struct
- FMaterialClosestHitPayload Payload = (FMaterialClosestHitPayload) 0;
- // SETTINGS
- const uint InstanceInclusionMask = RAY_TRACING_MASK_OPAQUE;
- const bool bEnableSkyLightContribution = false;
- const bool bIgnoreTranslucentMaterials = false;
- uint RayFlags = RAY_FLAG_FORCE_OPAQUE | RAY_FLAG_CULL_BACK_FACING_TRIANGLES;
- FRayCone RayCone = (FRayCone)0;
- // TraceRay for FMaterialClosestHitPayload
- FMaterialClosestHitPayload Payload = TraceMaterialRay(
- TLAS,
- RayFlags,
- InstanceInclusionMask,
- Ray,
- RayCone,
- bEnableSkyLightContribution,
- bIgnoreTranslucentMaterials);
- if (Payload.IsHit())
- outTex[PixelCoord] = 1.0f;
- else
- outTex[PixelCoord] = 0.0f;
- }
- [shader("miss")]
- void RayTraceTestMS(inout FMaterialClosestHitPayload data)
- {
- data.SetMiss();
- }
- [shader("closesthit")]
- void RayTraceTestCHS(inout FMaterialClosestHitPayload data, BuiltInTriangleIntersectionAttributes attribs)
- {
- data.HitT = RayTCurrent();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement