8 #include <nap/resourceptr.h>
9 #include <utility/dllexport.h>
10 #include <nap/resource.h>
13 #include "uniformcontainer.h"
14 #include "materialcommon.h"
21 class DescriptorSetCache;
27 constexpr
const char*
shader =
"Shader";
30 constexpr
const char*
buffers =
"Buffers";
32 constexpr
const char*
vbindings =
"VertexAttributeBindings";
57 std::vector<ResourcePtr<BufferBinding>>
mBuffers;
65 using UniformStructMap = std::unordered_map<std::string, std::unique_ptr<UniformStruct>>;
155 const VertexAttributeBinding* findVertexAttributeBinding(
const std::string& shaderAttributeID)
const;
160 static const std::vector<VertexAttributeBinding>& sGetDefaultVertexAttributeBindings();
208 glm::uvec3 getWorkGroupSize()
const;
const Shader & getShader() const
Definition: material.h:121
Definition: material.h:41
Definition: material.h:183
EBlendMode
Definition: materialcommon.h:18
const BaseShader & getShader() const
Definition: material.h:54
void setDepthMode(EDepthMode depthMode)
Definition: material.h:149
Definition: objectptr.h:154
@ InheritFromBlendMode
Transparent objects do not write depth, but do read depth. Opaque objects read and write depth.
void setBlendMode(EBlendMode blendMode)
Definition: material.h:135
EDepthMode
Definition: materialcommon.h:40
ResourcePtr< ComputeShader > mShader
Property: 'Shader' The compute shader that this material is using.
Definition: material.h:210
ResourcePtr< Shader > mShader
Property: 'Shader' The shader that this material is using.
Definition: material.h:163
constexpr const char * shader
Definition: material.h:27
Definition: errorstate.h:19
@ NotSet
Default value for MaterialInstances, means that the Material's blend is used instead.
constexpr const char * buffers
Definition: material.h:30
Definition: material.h:83
std::vector< VertexAttributeBinding > mVertexAttributeBindings
Property: 'VertexAttributeBindings' Optional, mapping from mesh vertex attr to shader vertex attr.
Definition: material.h:162
@ Opaque
Regular opaque, similar to (One, Zero) blend.
virtual ~BaseMaterial()=default
EDepthMode getDepthMode() const
Definition: material.h:142
std::string mMeshAttributeID
mesh vertex buffer name
Definition: material.h:106
@ NotSet
Default value for MaterialInstances, means that the Material's blend mode is used instead.
Definition: renderservice.h:275
std::vector< ResourcePtr< ShaderConstant > > mConstants
Property: 'Constants' Static constants (as read from file, or as set in code before calling init())
Definition: material.h:59
constexpr const char * samplers
Definition: material.h:29
std::vector< ResourcePtr< UniformStruct > > mUniforms
Property: 'Uniforms' Static uniforms (as read from file, or as set in code before calling init())
Definition: material.h:56
std::string mShaderAttributeID
shader vertex buffer name
Definition: material.h:107
constexpr const char * uniforms
Definition: material.h:28
std::vector< ResourcePtr< BufferBinding > > mBuffers
Property: 'Buffers' Static buffer bindings (as read from file, or as set in code before calling init(...
Definition: material.h:57
Definition: templateapp.h:17
const ComputeShader & getShader() const
Definition: material.h:203
bool rebuild(const BaseShader &shader, utility::ErrorState &errorState)
Definition: resource.h:19
constexpr const char * constants
Definition: material.h:31
EBlendMode getBlendMode() const
Definition: material.h:128
constexpr const char * vbindings
Definition: material.h:32
std::vector< ResourcePtr< Sampler > > mSamplers
Property: 'Samplers' Static samplers (as read from file, or as set in code before calling init())
Definition: material.h:58
Definition: material.h:95