8 #include "bufferbinding.h"
10 #include "structbuffer.h"
13 #include <rtti/objectptr.h>
14 #include <glm/glm.hpp>
15 #include <utility/dllexport.h>
16 #include <nap/resource.h>
21 class BufferBindingInstance;
79 mBindingName(bindingName),
80 mBindingChangedCallback(bindingChangedCallback)
95 bool hasBuffer()
const {
return mBuffer !=
nullptr; }
141 template<
typename INSTANCE_TYPE,
typename RESOURCE_TYPE,
typename DECLARATION_TYPE>
182 mDeclaration(&declaration)
229 void raiseChanged() {
if (mBindingChangedCallback) mBindingChangedCallback(*
this); }
249 mDeclaration(&declaration)
343 NAP_ASSERT_MSG(buffer.
getSize() == mDeclaration->mSize, utility::stringFormat(
"Buffer size (%zu bytes) does not match the shader declaration (%d bytes)", buffer.
getSize(), mDeclaration->mSize).c_str());
351 NAP_ASSERT_MSG(resource.
mBuffer.getSize() == mDeclaration->mSize, utility::stringFormat(
"Buffer size (%zu bytes) does not match the shader declaration (%d bytes)", resource.
mBuffer.getSize(), mDeclaration->mSize).c_str());
Definition: shadervariabledeclarations.h:58
bool hasBuffer() const
Definition: bufferbindinginstance.h:95
const ShaderVariableValueArrayDeclaration & getNumericDeclaration() const
Definition: bufferbindinginstance.h:260
Definition: materialinstance.h:101
Definition: bufferbinding.h:68
BufferBindingInstance(const std::string &bindingName, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:78
virtual const ShaderVariableDeclaration & getDeclaration() const override
Definition: bufferbindinginstance.h:255
Definition: material.h:41
const TypedGPUBufferNumeric< T > & getTypedBuffer() const
Definition: bufferbindinginstance.h:306
Definition: bufferbindinginstance.h:242
BufferBindingChangedCallback mBindingChangedCallback
Definition: bufferbindinginstance.h:114
Definition: gpubuffer.h:222
TypedBufferBindingNumericInstance(const std::string &bindingName, const ShaderVariableValueArrayDeclaration &declaration, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:277
void setBuffer(TypedGPUBufferNumeric< T > &buffer)
Definition: bufferbindinginstance.h:341
Definition: bufferbindinginstance.h:73
Definition: shadervariabledeclarations.h:140
Definition: errorstate.h:19
rtti::ObjectPtr< TypedGPUBufferNumeric< T > > mBuffer
Definition: bufferbinding.h:141
GPUBuffer * mBuffer
Definition: bufferbindinginstance.h:115
const GPUBuffer & getBuffer() const
Definition: bufferbindinginstance.h:100
const ShaderVariableStructBufferDeclaration & getStructDeclaration() const
Definition: bufferbindinginstance.h:198
std::function< void(BufferBindingInstance &)> BufferBindingChangedCallback
Definition: bufferbindinginstance.h:24
BufferBindingNumericInstance(const std::string &bindingName, const ShaderVariableValueArrayDeclaration &declaration, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:247
Definition: bufferbindinginstance.h:175
TypedGPUBufferNumeric< T > & getTypedBuffer()
Definition: bufferbindinginstance.h:311
Definition: structbuffer.h:36
Definition: bufferbinding.h:130
const std::string mBindingName
Definition: bufferbindinginstance.h:113
BufferBindingStructInstance(const std::string &bindingName, const ShaderVariableStructBufferDeclaration &declaration, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:180
Definition: templateapp.h:17
StructBuffer & getBuffer()
Definition: bufferbindinginstance.h:208
GPUBuffer & getBuffer()
Definition: bufferbindinginstance.h:105
Definition: gpubuffer.h:64
Definition: gpubuffer.h:308
Definition: shadervariabledeclarations.h:171
const GPUBufferNumeric & getBuffer() const
Definition: bufferbindinginstance.h:284
const StructBuffer & getBuffer() const
Definition: bufferbindinginstance.h:203
const std::string & getBindingName() const
Definition: bufferbindinginstance.h:110
const ShaderVariableValueArrayDeclaration * mDeclaration
Definition: bufferbindinginstance.h:263
Definition: bufferbinding.h:149
Definition: bufferbindinginstance.h:272
virtual size_t getSize() const override
Definition: gpubuffer.h:258
Definition: shadervariabledeclarations.h:155
virtual const ShaderVariableDeclaration & getDeclaration() const override
Definition: bufferbindinginstance.h:193
GPUBufferNumeric & getBuffer()
Definition: bufferbindinginstance.h:289