8 #include <nap/resourceptr.h>
9 #include <utility/dllexport.h>
10 #include <nap/resource.h>
11 #include <nap/signalslot.h>
12 #include <rtti/typeinfo.h>
15 #include "uniformcontainer.h"
16 #include "descriptorsetcache.h"
24 class DescriptorSetCache;
44 std::vector<ResourcePtr<BufferBinding>>
mBuffers;
50 rttr::property getMaterialProperty()
const;
55 const std::string& getMaterialPropertyName()
const;
72 static constexpr
const char* matProperty =
"Material";
90 static constexpr
const char* matProperty =
"ComputeMaterial";
130 T* getOrCreateBuffer(const std::
string& name);
155 T* getOrCreateSampler(
const std::string& name);
182 T* getOrCreateSampler(
const Sampler& resource);
226 void onUniformCreated();
227 void onSamplerChanged(
int imageStartIndex,
SamplerInstance& samplerInstance,
int imageArrayIndex);
235 void addImageInfo(
const Texture& texture, VkSampler sampler);
253 VkDevice mDevice =
nullptr;
270 bool mUniformsCreated =
false;
387 glm::uvec3 getWorkGroupSize()
const;
BufferBindingInstance * getOrCreateBufferInternal(const std::string &name)
DescriptorSetCache * mDescriptorSetCache
Definition: materialinstance.h:258
std::vector< VkDescriptorImageInfo > mSamplerDescriptors
Definition: materialinstance.h:265
uint ShaderConstantHash
Definition: materialcommon.h:71
Definition: descriptorsetcache.h:48
Definition: materialinstance.h:101
std::string mMaterialPropertyName
Definition: materialinstance.h:61
Material & getMaterial()
Definition: materialinstance.h:310
Definition: material.h:41
Definition: material.h:183
const ShaderStageConstantMap & getShaderStageConstantMap() const
Definition: materialinstance.h:245
Definition: materialinstance.h:86
EBlendMode
Definition: materialcommon.h:18
std::vector< VkDescriptorBufferInfo > mStorageDescriptors
Definition: materialinstance.h:262
ComputeMaterial & getMaterial()
Definition: materialinstance.h:377
T * getOrCreateBuffer(const std::string &name)
Definition: materialinstance.h:399
SamplerInstance * getOrCreateSampler(const std::string &name)
Definition: materialinstance.h:165
Definition: objectptr.h:154
std::vector< ResourcePtr< BufferBinding > > mBuffers
Property: "Buffers" buffer bindings to override.
Definition: materialinstance.h:44
ResourcePtr< ComputeMaterial > mComputeMaterial
Property: "ComputeMaterial" source material.
Definition: materialinstance.h:95
EDepthMode
Definition: materialcommon.h:40
constexpr const char * getOrCreateMaterial
Definition: materialinstance.h:31
std::vector< ResourcePtr< Sampler > > mSamplers
Property: "Samplers" samplers that you're overriding.
Definition: materialinstance.h:43
Definition: bufferbindinginstance.h:73
Definition: errorstate.h:19
@ NotSet
Default value for MaterialInstances, means that the Material's blend is used instead.
Definition: material.h:83
std::string mName
Property: 'Name' sampler shader name.
Definition: sampler.h:92
@ NotSet
Default value for MaterialInstances, means that the Material's blend mode is used instead.
std::vector< ResourcePtr< UniformStruct > > mUniforms
Property: "Uniforms" uniform structs to override.
Definition: materialinstance.h:42
Definition: renderservice.h:275
Definition: samplerinstance.h:18
ComputeMaterialInstanceResource()
Definition: materialinstance.h:92
T * getOrCreateSampler(const std::string &name)
Definition: materialinstance.h:405
std::vector< ResourcePtr< ShaderConstant > > mConstants
Property: "Constants" shader constants to override.
Definition: materialinstance.h:45
MaterialInstanceResource()
Definition: materialinstance.h:74
SamplerInstance * getOrCreateSampler(const Sampler &resource)
Definition: materialinstance.h:194
ShaderConstantHash mConstantHash
Definition: materialinstance.h:268
Definition: renderablemesh.h:22
Definition: materialinstance.h:297
ShaderStageConstantMap mShaderStageConstantMap
Definition: materialinstance.h:267
Definition: materialinstance.h:364
BaseMaterial * getMaterial()
Definition: materialinstance.h:199
Definition: descriptorsetcache.h:29
Definition: templateapp.h:17
const BaseMaterial * getMaterial() const
Definition: materialinstance.h:204
ResourcePtr< Material > mMaterial
Property: "Material" Source material.
Definition: materialinstance.h:77
Definition: materialinstance.h:38
std::vector< VkWriteDescriptorSet > mStorageWriteDescriptorSets
Definition: materialinstance.h:261
ShaderConstantHash getConstantHash() const
Definition: materialinstance.h:250
const Material & getMaterial() const
Definition: materialinstance.h:315
std::vector< UniformBufferObject > mUniformBufferObjects
Definition: materialinstance.h:259
std::vector< VkWriteDescriptorSet > mSamplerWriteDescriptorSets
Definition: materialinstance.h:264
const ComputeMaterial & getMaterial() const
Definition: materialinstance.h:382
std::map< VkShaderStageFlagBits, ShaderConstantMap > ShaderStageConstantMap
Definition: shaderconstantdeclaration.h:20
SamplerInstance * getOrCreateSamplerInternal(const std::string &name, const Sampler *sampler)
Definition: materialinstance.h:68