Starting to integrate mesh optimizer

This commit is contained in:
Dynamitos
2025-05-12 22:48:01 +02:00
parent 10f2a9235b
commit f873d6db26
21 changed files with 446 additions and 288 deletions
+34 -33
View File
@@ -1,57 +1,58 @@
const static float3 vertices[] = {
// Right
float3( 1, -1, 1),
float3( 1, 1, 1),
float3( 1, -1, 1),
float3( 1, 1, -1),
float3( 1, 1, -1),
float3( 1, -1, 1),
float3( 1, -1, -1),
float3( 1, -1, -1),
float3( 1, 1, 1),
float3( 1, 1, -1),
// Left
float3(-1, -1, -1),
float3(-1, 1, -1),
float3(-1, -1, -1),
float3(-1, 1, 1),
float3(-1, 1, 1),
float3(-1, -1, -1),
float3(-1, -1, 1),
float3(-1, -1, 1),
float3(-1, 1, -1),
float3(-1, 1, 1),
// Bottom
float3(-1, -1, 1),
float3(-1, -1, -1),
float3( 1, -1, 1),
float3(-1, 1, 1),
float3(-1, 1, -1),
float3( 1, 1, 1),
float3( 1, -1, 1),
float3(-1, -1, -1),
float3( 1, -1, -1),
float3( 1, 1, 1),
float3(-1, 1, -1),
float3( 1, 1, -1),
// Top
float3(-1, 1, -1),
float3(-1, 1, 1),
float3( 1, 1, -1),
float3( 1, 1, -1),
float3(-1, 1, 1),
float3( 1, 1, 1),
// Back
float3(-1, 1, 1),
float3(-1, -1, -1),
float3(-1, -1, 1),
float3( 1, 1, 1),
float3( 1, -1, -1),
float3( 1, 1, 1),
float3( 1, -1, -1),
float3(-1, -1, 1),
float3( 1, -1, 1),
// Front
float3( 1, 1, -1),
float3( 1, -1, -1),
float3( 1, 1, -1),
float3(-1, -1, -1),
float3(-1, -1, -1),
float3( 1, 1, -1),
float3(-1, 1, -1),
float3(-1, 1, -1),
float3( 1, -1, -1),
float3(-1, -1, -1),
// Back
float3(-1, -1, 1),
float3(-1, 1, 1),
float3( 1, -1, 1),
float3( 1, -1, 1),
float3(-1, 1, 1),
float3( 1, 1, 1),
};
struct ViewParams
@@ -80,7 +81,7 @@ VertexOutput vertMain(uint vertexIndex : SV_VertexID, uint viewIndex : SV_ViewID
const static float2 invAtan = float2(0.1591, 0.3183);
float2 sampleSphericalMap(float3 v)
{
float2 uv = float2(atan2(v.z, v.x), asin(v.y));
float2 uv = float2(atan2(-v.z, v.x), asin(v.y));
uv *= invAtan;
uv += 0.5;
return uv;
+58 -57
View File
@@ -1,5 +1,62 @@
import Common;
const static float3 vertices[] = {
// Right
float3(512, -512, 512),
float3(512, 512, 512),
float3(512, -512, -512),
float3(512, -512, -512),
float3(512, 512, 512),
float3(512, 512, -512),
// Left
float3(-512, -512, -512),
float3(-512, 512, -512),
float3(-512, -512, 512),
float3(-512, -512, 512),
float3(-512, 512, -512),
float3(-512, 512, 512),
// Bottom
float3(-512, 512, 512),
float3(-512, 512, -512),
float3(512, 512, 512),
float3(512, 512, 512),
float3(-512, 512, -512),
float3(512, 512, -512),
// Top
float3(-512, -512, -512),
float3(-512, -512, 512),
float3(512, -512, -512),
float3(512, -512, -512),
float3(-512, -512, 512),
float3(512, -512, 512),
// Front
float3(512, -512, -512),
float3(512, 512, -512),
float3(-512, -512, -512),
float3(-512, -512, -512),
float3(512, 512, -512),
float3(-512, 512, -512),
// Back
float3(-512, -512, 512),
float3(-512, 512, 512),
float3(512, -512, 512),
float3(512, -512, 512),
float3(-512, 512, 512),
float3(512, 512, 512),
};
struct VertexShaderOutput
{
float4 clipPos : SV_Position;
@@ -12,62 +69,6 @@ struct SkyboxData
};
ParameterBlock<SkyboxData> pSkyboxData;
const static float3 vertices[] = {
// Back
float3(-512, -512, 512),
float3(-512, 512, 512),
float3( 512, -512, 512),
float3( 512, -512, 512),
float3(-512, 512, 512),
float3( 512, 512, 512),
// Front
float3( 512, -512, -512),
float3( 512, 512, -512),
float3(-512, -512, -512),
float3(-512, -512, -512),
float3( 512, 512, -512),
float3(-512, 512, -512),
// Top
float3(-512, -512, -512),
float3(-512, -512, 512),
float3( 512, -512, -512),
float3( 512, -512, -512),
float3(-512, -512, 512),
float3( 512, -512, 512),
// Bottom
float3(-512, 512, 512),
float3(-512, 512, -512),
float3( 512, 512, 512),
float3( 512, 512, 512),
float3(-512, 512, -512),
float3( 512, 512, -512),
// Left
float3(-512, -512, -512),
float3(-512, 512, -512),
float3(-512, -512, 512),
float3(-512, -512, 512),
float3(-512, 512, -512),
float3(-512, 512, 512),
// Right
float3( 512, -512, 512),
float3( 512, 512, 512),
float3( 512, -512, -512),
float3( 512, -512, -512),
float3( 512, 512, 512),
float3( 512, 512, -512),
};
[shader("vertex")]
VertexShaderOutput vertexMain(
uint vertexIndex : SV_VertexId)
@@ -101,5 +102,5 @@ float4 fragmentMain(
float factor = (output.texCoords.y - lowerLimit) / (upperLimit - lowerLimit);
factor = clamp(factor, 0.0, 1.0);
return lerp(float4(pSkyboxData.fogBlend.xyz, 1), finalColor, factor);
return finalColor;//lerp(float4(pSkyboxData.fogBlend.xyz, 1), finalColor, factor);
}
+1 -1
View File
@@ -113,5 +113,5 @@ float4 toneMapping(float2 uv : UV) : SV_Target
value = agxLook(value);
value = agxEotf(value);
return float4(hdrValue, 1);
return float4(value, 1);
}
+2
View File
@@ -59,6 +59,8 @@ ConstantBuffer<DrawCallOffsets> pOffsets;
struct Scene
{
StructuredBuffer<float> positions;
StructuredBuffer<uint> indexBuffer;
StructuredBuffer<InstanceData> instances;
StructuredBuffer<MeshData> meshData;
StructuredBuffer<MeshletDescription> meshletInfos;
+2 -2
View File
@@ -1,6 +1,7 @@
import Common;
import VertexData;
import MaterialParameter;
import Scene;
struct StaticMeshVertexData : IVertexData
{
@@ -12,7 +13,7 @@ struct StaticMeshVertexData : IVertexData
VertexAttributes getAttributes(uint index)
{
VertexAttributes attributes;
attributes.position_MS = float3(positions[index * 3 + 0], positions[index * 3 + 1], positions[index * 3 + 2]);
attributes.position_MS = float3(pScene.positions[index * 3 + 0], pScene.positions[index * 3 + 1], pScene.positions[index * 3 + 2]);
#ifndef POS_ONLY
//attributes.qTangent = qTangent[index];
attributes.normal_MS = float3(normals[index * 3 + 0], normals[index * 3 + 1], normals[index * 3 + 2]);
@@ -26,7 +27,6 @@ struct StaticMeshVertexData : IVertexData
#endif
return attributes;
}
StructuredBuffer<float> positions;
//StructuredBuffer<float> qTangents;
StructuredBuffer<float> normals;
StructuredBuffer<float> tangents;