More ray tracing changes

This commit is contained in:
Dynamitos
2024-07-10 21:07:10 +02:00
parent acf8dde8fc
commit a9089bd997
46 changed files with 801 additions and 277 deletions
+1 -1
View File
@@ -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")]
View File
-2
View File
@@ -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;
+5 -1
View File
@@ -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
+5 -4
View File
@@ -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;
}
+7
View File
@@ -0,0 +1,7 @@
import RayTracingData;
[shader("miss")]
void main(inout float3 p)
{
p = float3(1, 0, 1);
}
+2 -4
View File
@@ -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 -7
View File
@@ -1,13 +1,7 @@
struct Payload
{
float3 color;
};
struct RayTracingParams
{
RaytracingAccelerationStructure scene;
RWTexture2D<float3> image;
RWTexture2D<float4> image;
StructuredBuffer<uint> indexBuffer;
};
ParameterBlock<RayTracingParams> pRayTracingParams;