Add gaussian splat compute shader contracts
This commit is contained in:
@@ -62,6 +62,12 @@ inline bool TryBuildBuiltinPassResourceBindingPlan(
|
||||
case BuiltinPassResourceSemantic::VolumeField:
|
||||
location = &outPlan.volumeField;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSortDistanceBuffer:
|
||||
location = &outPlan.gaussianSplatSortDistanceBuffer;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatOrderBuffer:
|
||||
location = &outPlan.gaussianSplatOrderBuffer;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatPositionBuffer:
|
||||
location = &outPlan.gaussianSplatPositionBuffer;
|
||||
break;
|
||||
@@ -74,6 +80,9 @@ inline bool TryBuildBuiltinPassResourceBindingPlan(
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSHBuffer:
|
||||
location = &outPlan.gaussianSplatSHBuffer;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatViewDataBuffer:
|
||||
location = &outPlan.gaussianSplatViewDataBuffer;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::BaseColorTexture:
|
||||
location = &outPlan.baseColorTexture;
|
||||
break;
|
||||
@@ -600,6 +609,12 @@ inline bool TryBuildBuiltinPassSetLayouts(
|
||||
case BuiltinPassResourceSemantic::VolumeField:
|
||||
setLayout.usesVolumeField = true;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSortDistanceBuffer:
|
||||
setLayout.usesGaussianSplatSortDistanceBuffer = true;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatOrderBuffer:
|
||||
setLayout.usesGaussianSplatOrderBuffer = true;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatPositionBuffer:
|
||||
setLayout.usesGaussianSplatPositionBuffer = true;
|
||||
break;
|
||||
@@ -612,6 +627,9 @@ inline bool TryBuildBuiltinPassSetLayouts(
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSHBuffer:
|
||||
setLayout.usesGaussianSplatSHBuffer = true;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatViewDataBuffer:
|
||||
setLayout.usesGaussianSplatViewDataBuffer = true;
|
||||
break;
|
||||
case BuiltinPassResourceSemantic::BaseColorTexture:
|
||||
setLayout.usesTexture = true;
|
||||
setLayout.usesBaseColorTexture = true;
|
||||
|
||||
@@ -147,6 +147,18 @@ inline BuiltinPassResourceSemantic ResolveBuiltinPassResourceSemantic(
|
||||
return BuiltinPassResourceSemantic::VolumeField;
|
||||
}
|
||||
|
||||
if (semantic == Containers::String("gaussiansplatsortdistancebuffer") ||
|
||||
semantic == Containers::String("gaussiansplatsortdistances") ||
|
||||
semantic == Containers::String("splatsortdistances")) {
|
||||
return BuiltinPassResourceSemantic::GaussianSplatSortDistanceBuffer;
|
||||
}
|
||||
|
||||
if (semantic == Containers::String("gaussiansplatorderbuffer") ||
|
||||
semantic == Containers::String("gaussiansplatorder") ||
|
||||
semantic == Containers::String("orderbuffer")) {
|
||||
return BuiltinPassResourceSemantic::GaussianSplatOrderBuffer;
|
||||
}
|
||||
|
||||
if (semantic == Containers::String("gaussiansplatpositionbuffer") ||
|
||||
semantic == Containers::String("gaussiansplatpositions") ||
|
||||
semantic == Containers::String("splatpositions")) {
|
||||
@@ -171,6 +183,12 @@ inline BuiltinPassResourceSemantic ResolveBuiltinPassResourceSemantic(
|
||||
return BuiltinPassResourceSemantic::GaussianSplatSHBuffer;
|
||||
}
|
||||
|
||||
if (semantic == Containers::String("gaussiansplatviewdatabuffer") ||
|
||||
semantic == Containers::String("gaussiansplatviewdata") ||
|
||||
semantic == Containers::String("splatviewdata")) {
|
||||
return BuiltinPassResourceSemantic::GaussianSplatViewDataBuffer;
|
||||
}
|
||||
|
||||
if (semantic == Containers::String("basecolortexture") ||
|
||||
semantic == Containers::String("maintex")) {
|
||||
return BuiltinPassResourceSemantic::BaseColorTexture;
|
||||
@@ -233,6 +251,10 @@ inline const char* BuiltinPassResourceSemanticToString(BuiltinPassResourceSemant
|
||||
return "PassConstants";
|
||||
case BuiltinPassResourceSemantic::VolumeField:
|
||||
return "VolumeField";
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSortDistanceBuffer:
|
||||
return "GaussianSplatSortDistanceBuffer";
|
||||
case BuiltinPassResourceSemantic::GaussianSplatOrderBuffer:
|
||||
return "GaussianSplatOrderBuffer";
|
||||
case BuiltinPassResourceSemantic::GaussianSplatPositionBuffer:
|
||||
return "GaussianSplatPositionBuffer";
|
||||
case BuiltinPassResourceSemantic::GaussianSplatOtherBuffer:
|
||||
@@ -241,6 +263,8 @@ inline const char* BuiltinPassResourceSemanticToString(BuiltinPassResourceSemant
|
||||
return "GaussianSplatColorBuffer";
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSHBuffer:
|
||||
return "GaussianSplatSHBuffer";
|
||||
case BuiltinPassResourceSemantic::GaussianSplatViewDataBuffer:
|
||||
return "GaussianSplatViewDataBuffer";
|
||||
case BuiltinPassResourceSemantic::BaseColorTexture:
|
||||
return "BaseColorTexture";
|
||||
case BuiltinPassResourceSemantic::SourceColorTexture:
|
||||
@@ -329,12 +353,17 @@ inline bool IsBuiltinPassResourceTypeCompatible(
|
||||
case BuiltinPassResourceSemantic::VolumeField:
|
||||
return type == Resources::ShaderResourceType::StructuredBuffer ||
|
||||
type == Resources::ShaderResourceType::RawBuffer;
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSortDistanceBuffer:
|
||||
case BuiltinPassResourceSemantic::GaussianSplatOrderBuffer:
|
||||
case BuiltinPassResourceSemantic::GaussianSplatPositionBuffer:
|
||||
case BuiltinPassResourceSemantic::GaussianSplatOtherBuffer:
|
||||
case BuiltinPassResourceSemantic::GaussianSplatColorBuffer:
|
||||
case BuiltinPassResourceSemantic::GaussianSplatSHBuffer:
|
||||
case BuiltinPassResourceSemantic::GaussianSplatViewDataBuffer:
|
||||
return type == Resources::ShaderResourceType::StructuredBuffer ||
|
||||
type == Resources::ShaderResourceType::RawBuffer;
|
||||
type == Resources::ShaderResourceType::RawBuffer ||
|
||||
type == Resources::ShaderResourceType::RWStructuredBuffer ||
|
||||
type == Resources::ShaderResourceType::RWRawBuffer;
|
||||
case BuiltinPassResourceSemantic::BaseColorTexture:
|
||||
case BuiltinPassResourceSemantic::SourceColorTexture:
|
||||
case BuiltinPassResourceSemantic::SkyboxPanoramicTexture:
|
||||
|
||||
@@ -46,11 +46,13 @@ enum class BuiltinPassResourceSemantic : Core::uint8 {
|
||||
Environment,
|
||||
PassConstants,
|
||||
VolumeField,
|
||||
GaussianSplatSortDistanceBuffer,
|
||||
GaussianSplatOrderBuffer,
|
||||
GaussianSplatPositionBuffer,
|
||||
GaussianSplatOtherBuffer,
|
||||
GaussianSplatColorBuffer,
|
||||
GaussianSplatSHBuffer,
|
||||
GaussianSplatViewDataBuffer,
|
||||
BaseColorTexture,
|
||||
SourceColorTexture,
|
||||
SkyboxPanoramicTexture,
|
||||
@@ -84,11 +86,13 @@ struct BuiltinPassResourceBindingPlan {
|
||||
PassResourceBindingLocation shadowReceiver = {};
|
||||
PassResourceBindingLocation environment = {};
|
||||
PassResourceBindingLocation passConstants = {};
|
||||
PassResourceBindingLocation gaussianSplatSortDistanceBuffer = {};
|
||||
PassResourceBindingLocation gaussianSplatOrderBuffer = {};
|
||||
PassResourceBindingLocation gaussianSplatPositionBuffer = {};
|
||||
PassResourceBindingLocation gaussianSplatOtherBuffer = {};
|
||||
PassResourceBindingLocation gaussianSplatColorBuffer = {};
|
||||
PassResourceBindingLocation gaussianSplatSHBuffer = {};
|
||||
PassResourceBindingLocation gaussianSplatViewDataBuffer = {};
|
||||
PassResourceBindingLocation baseColorTexture = {};
|
||||
PassResourceBindingLocation sourceColorTexture = {};
|
||||
PassResourceBindingLocation skyboxPanoramicTexture = {};
|
||||
@@ -122,11 +126,13 @@ struct BuiltinPassSetLayoutMetadata {
|
||||
bool usesPassConstants = false;
|
||||
bool usesMaterialBuffers = false;
|
||||
bool usesVolumeField = false;
|
||||
bool usesGaussianSplatSortDistanceBuffer = false;
|
||||
bool usesGaussianSplatOrderBuffer = false;
|
||||
bool usesGaussianSplatPositionBuffer = false;
|
||||
bool usesGaussianSplatOtherBuffer = false;
|
||||
bool usesGaussianSplatColorBuffer = false;
|
||||
bool usesGaussianSplatSHBuffer = false;
|
||||
bool usesGaussianSplatViewDataBuffer = false;
|
||||
bool usesTexture = false;
|
||||
bool usesBaseColorTexture = false;
|
||||
bool usesSourceColorTexture = false;
|
||||
|
||||
@@ -39,6 +39,7 @@ Containers::String GetBuiltinSelectionMaskShaderPath();
|
||||
Containers::String GetBuiltinSelectionOutlineShaderPath();
|
||||
Containers::String GetBuiltinSkyboxShaderPath();
|
||||
Containers::String GetBuiltinGaussianSplatShaderPath();
|
||||
Containers::String GetBuiltinGaussianSplatUtilitiesShaderPath();
|
||||
Containers::String GetBuiltinVolumetricShaderPath();
|
||||
Containers::String GetBuiltinColorScalePostProcessShaderPath();
|
||||
Containers::String GetBuiltinFinalColorShaderPath();
|
||||
|
||||
Reference in New Issue
Block a user