Add forward shadow receiving support
This commit is contained in:
@@ -68,6 +68,12 @@ private:
|
||||
Math::Vector4 mainLightColorAndFlags = Math::Vector4::Zero();
|
||||
};
|
||||
|
||||
struct ShadowReceiverConstants {
|
||||
Math::Matrix4x4 worldToShadow = Math::Matrix4x4::Identity();
|
||||
Math::Vector4 shadowBiasAndTexelSize = Math::Vector4::Zero();
|
||||
Math::Vector4 shadowOptions = Math::Vector4::Zero();
|
||||
};
|
||||
|
||||
struct FallbackPerMaterialConstants {
|
||||
Math::Vector4 baseColorFactor = Math::Vector4::One();
|
||||
};
|
||||
@@ -97,8 +103,11 @@ private:
|
||||
std::vector<OwnedDescriptorSet> staticDescriptorSets;
|
||||
PassResourceBindingLocation perObject = {};
|
||||
PassResourceBindingLocation material = {};
|
||||
PassResourceBindingLocation shadowReceiver = {};
|
||||
PassResourceBindingLocation baseColorTexture = {};
|
||||
PassResourceBindingLocation linearClampSampler = {};
|
||||
PassResourceBindingLocation shadowMapTexture = {};
|
||||
PassResourceBindingLocation shadowMapSampler = {};
|
||||
};
|
||||
|
||||
struct DynamicDescriptorSetKey {
|
||||
@@ -132,7 +141,8 @@ private:
|
||||
struct CachedDescriptorSet {
|
||||
OwnedDescriptorSet descriptorSet = {};
|
||||
Core::uint64 materialVersion = 0;
|
||||
RHI::RHIResourceView* textureView = nullptr;
|
||||
RHI::RHIResourceView* baseColorTextureView = nullptr;
|
||||
RHI::RHIResourceView* shadowMapTextureView = nullptr;
|
||||
};
|
||||
|
||||
struct ResolvedShaderPass {
|
||||
@@ -190,7 +200,9 @@ private:
|
||||
Core::uint64 objectId,
|
||||
const Resources::Material* material,
|
||||
const MaterialConstantPayloadView& materialConstants,
|
||||
RHI::RHIResourceView* textureView);
|
||||
const ShadowReceiverConstants& shadowReceiverConstants,
|
||||
RHI::RHIResourceView* baseColorTextureView,
|
||||
RHI::RHIResourceView* shadowMapTextureView);
|
||||
void DestroyOwnedDescriptorSet(OwnedDescriptorSet& descriptorSet);
|
||||
void DestroyPassResourceLayout(PassResourceLayout& passLayout);
|
||||
|
||||
@@ -214,6 +226,7 @@ private:
|
||||
std::unordered_map<PipelineStateKey, RHI::RHIPipelineState*, PipelineStateKeyHash> m_pipelineStates;
|
||||
std::unordered_map<DynamicDescriptorSetKey, CachedDescriptorSet, DynamicDescriptorSetKeyHash> m_dynamicDescriptorSets;
|
||||
RHI::RHISampler* m_sampler = nullptr;
|
||||
RHI::RHISampler* m_shadowSampler = nullptr;
|
||||
RHI::RHITexture* m_fallbackTexture = nullptr;
|
||||
RHI::RHIResourceView* m_fallbackTextureView = nullptr;
|
||||
RenderPassSequence m_passSequence;
|
||||
|
||||
Reference in New Issue
Block a user