More ray tracing changes
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import Common;
|
||||
import LightEnv;
|
||||
import MaterialParameter;
|
||||
import MATERIAL_FILE_NAME;
|
||||
|
||||
struct LightCullingData
|
||||
{
|
||||
@@ -8,7 +9,6 @@ struct LightCullingData
|
||||
|
||||
RWTexture2D<uint2> lightGrid;
|
||||
};
|
||||
layout(set=5)
|
||||
ParameterBlock<LightCullingData> pLightCullingData;
|
||||
|
||||
[shader("pixel")]
|
||||
|
||||
@@ -10,7 +10,6 @@ struct SkyboxData
|
||||
float4x4 transformMatrix;
|
||||
float4 fogBlend;
|
||||
};
|
||||
layout(set=1)
|
||||
ParameterBlock<SkyboxData> pSkyboxData;
|
||||
|
||||
[shader("vertex")]
|
||||
@@ -88,7 +87,6 @@ struct TextureData
|
||||
TextureCube cubeMap2;
|
||||
SamplerState sampler;
|
||||
};
|
||||
layout(set=2)
|
||||
ParameterBlock<TextureData> pSkyboxTextures;
|
||||
static const float lowerLimit = 0.0;
|
||||
static const float upperLimit = 0.1;
|
||||
|
||||
@@ -43,12 +43,16 @@ struct MeshletCullingInfo
|
||||
|
||||
struct DrawCallOffsets
|
||||
{
|
||||
uint32_t instanceOffset;
|
||||
uint instanceOffset;
|
||||
uint textureOffset;
|
||||
uint samplerOffset;
|
||||
uint floatOffset;
|
||||
};
|
||||
#ifdef RAY_TRACING
|
||||
layout(shaderRecordEXT)
|
||||
#else
|
||||
layout(push_constant)
|
||||
#endif
|
||||
ConstantBuffer<DrawCallOffsets> pOffsets;
|
||||
|
||||
struct Scene
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import Common;
|
||||
import RayTracingData;
|
||||
import VertexData;
|
||||
import MaterialParameter;
|
||||
import Scene;
|
||||
import LightEnv;
|
||||
import Scene;
|
||||
import RayTracingData;
|
||||
import MATERIAL_FILE_NAME;
|
||||
|
||||
// simplification: all BLAS only have 1 geometry
|
||||
|
||||
[shader("closesthit")]
|
||||
void main(inout payload Payload hitValue, in BuiltInTriangleIntersectionAttributes attr)
|
||||
void closesthit(inout float3 hitValue, in BuiltInTriangleIntersectionAttributes attr)
|
||||
{
|
||||
const float3 barycentricCoords = float3(1.0f - attr.barycentrics.x - attr.barycentrics.y, attr.barycentrics.x, attr.barycentrics.y);
|
||||
|
||||
@@ -52,5 +53,5 @@ void main(inout payload Payload hitValue, in BuiltInTriangleIntersectionAttribut
|
||||
result = result / (result + float3(1.0));
|
||||
result = pow(result, float3(1.0/2.2));
|
||||
|
||||
hitValue.color = result;
|
||||
hitValue = result;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import RayTracingData;
|
||||
|
||||
[shader("miss")]
|
||||
void main(inout float3 p)
|
||||
{
|
||||
p = float3(1, 0, 1);
|
||||
}
|
||||
@@ -17,11 +17,9 @@ void main()
|
||||
|
||||
uint max_rays = 24;
|
||||
|
||||
uint object_type = 100;
|
||||
float4 color = float4(0, 0, 0, 0);
|
||||
uint current_mode = 0;
|
||||
float expectedDistance = -1;
|
||||
Payload payload;
|
||||
float3 payload;
|
||||
|
||||
RayDesc desc = {
|
||||
origin.xyz,
|
||||
@@ -32,5 +30,5 @@ void main()
|
||||
|
||||
TraceRay(pRayTracingParams.scene, RAY_FLAG_FORCE_OPAQUE, 0xff, 0, 0, 0, desc, payload);
|
||||
|
||||
pRayTracingParams.image[DispatchRaysIndex().xy] = payload.color;
|
||||
pRayTracingParams.image[DispatchRaysIndex().xy] = float4(payload, 1.0f);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
|
||||
struct Payload
|
||||
{
|
||||
float3 color;
|
||||
};
|
||||
|
||||
struct RayTracingParams
|
||||
{
|
||||
RaytracingAccelerationStructure scene;
|
||||
RWTexture2D<float3> image;
|
||||
RWTexture2D<float4> image;
|
||||
StructuredBuffer<uint> indexBuffer;
|
||||
};
|
||||
ParameterBlock<RayTracingParams> pRayTracingParams;
|
||||
|
||||
Reference in New Issue
Block a user