Optimize model SDF with 8-bit storage (if possible)

This commit is contained in:
Wojciech Figat
2022-03-22 15:08:38 +01:00
parent 6196bb31fe
commit 18321937e4
4 changed files with 60 additions and 29 deletions

View File

@@ -15,9 +15,9 @@ struct ModelRasterizeData
float3 VolumeToUVWMul;
float MipOffset;
float3 VolumeToUVWAdd;
float MaxDistance;
float DecodeMul;
float3 VolumeLocalBoundsExtent;
float Padding0;
float DecodeAdd;
};
META_CB_BEGIN(0, Data)
@@ -73,7 +73,7 @@ float DistanceToModelSDF(float minDistance, ModelRasterizeData modelData, Textur
BRANCH if (minDistance <= distanceToVolume) return distanceToVolume;
// Sample SDF
float volumeDistance = modelSDFTex.SampleLevel(SamplerLinearClamp, volumeUV, modelData.MipOffset).x * modelData.MaxDistance;
float volumeDistance = modelSDFTex.SampleLevel(SamplerLinearClamp, volumeUV, modelData.MipOffset).x * modelData.DecodeMul + modelData.DecodeAdd;
// Combine distance to the volume with distance to the surface inside the model
float result = CombineDistanceToSDF(volumeDistance, distanceToVolume);