1#ifndef NW_G3D_MATERIALOBJ_H_
2#define NW_G3D_MATERIALOBJ_H_
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/res/g3d_ResMaterial.h>
6#include <nw/g3d/g3d_Sizer.h>
8namespace nw {
namespace g3d {
31 bool Init(
const InitArg& arg,
void* pBuffer, size_t bufferSize);
77 return m_pRes->GetShaderParamName(paramIndex);
84 return m_pRes->GetShaderParam(paramIndex);
89 return m_pRes->GetShaderParam(paramIndex);
94 return m_pRes->GetShaderParam(name);
99 return m_pRes->GetShaderParam(name);
109 return AddOffset(
m_pSrcParam, pParam->GetSrcOffset());
117 template <
typename T>
121 NW_G3D_ASSERTMSG(
sizeof(T) <= pParam->GetSrcSize(),
"Oversized T. %u <= %u",
122 sizeof(T), pParam->GetSrcSize());
127 return AddOffset<T>(
m_pSrcParam, pParam->GetSrcOffset());
130 template <
typename T>
134 NW_G3D_ASSERTMSG(
sizeof(T) <= pParam->GetSrcSize(),
"Oversized T. %u <= %u",
135 sizeof(T), pParam->GetSrcSize());
136 return AddOffset<T>(
m_pSrcParam, pParam->GetSrcOffset());
193 return m_pRes->GetSamplerName(samplerIndex);
200 return m_pRes->GetSampler(samplerIndex);
205 return m_pRes->GetSampler(samplerIndex);
Definition g3d_MaterialObj.h:279
ResMaterial * GetResource() const
Definition g3d_MaterialObj.h:288
InitArg(ResMaterial *resource)
Definition g3d_MaterialObj.h:281
Sizer m_Sizer
Definition g3d_MaterialObj.h:295
ResMaterial * m_pRes
Definition g3d_MaterialObj.h:293
Sizer & GetSizer() const
Definition g3d_MaterialObj.h:290
Definition g3d_MaterialObj.h:260
Chunk chunk[NUM_CHUNK]
Definition g3d_MaterialObj.h:275
@ SRC_PARAM_ARRAY
Definition g3d_MaterialObj.h:270
@ DIRTY_FLAG_ARRAY
Definition g3d_MaterialObj.h:268
@ NUM_CHUNK
Definition g3d_MaterialObj.h:272
@ TEXTURE_ARRAY
Definition g3d_MaterialObj.h:271
void Calc(const InitArg &arg)
Definition g3d_MaterialObj.cpp:6
Sizer()
Definition g3d_MaterialObj.h:262
Definition g3d_MaterialObj.h:11
T * GetUserPtr()
Definition g3d_MaterialObj.h:68
bool Init(const InitArg &arg, void *pBuffer, size_t bufferSize)
Definition g3d_MaterialObj.cpp:29
ResShaderParam * GetResShaderParam(int paramIndex)
Definition g3d_MaterialObj.h:82
bool IsBlockBufferValid() const
Definition g3d_MaterialObj.h:49
const ResShaderParam * GetResShaderParam(int paramIndex) const
Definition g3d_MaterialObj.h:87
int GetTextureCount() const
Definition g3d_MaterialObj.h:157
void ResetDirtyFlags()
Definition g3d_MaterialObj.cpp:158
GfxBuffer & GetMatBlock()
Definition g3d_MaterialObj.h:51
ResSampler * GetResSampler(const char *name)
Definition g3d_MaterialObj.h:208
const T * GetShaderParam(int paramIndex) const
Definition g3d_MaterialObj.h:131
const ResTexture * GetResTexture(int texIndex) const
Definition g3d_MaterialObj.h:165
void * EditShaderParam(int paramIndex)
Definition g3d_MaterialObj.h:102
const void * GetUserPtr() const
Definition g3d_MaterialObj.h:65
void ConvertParams(void *pBuffer)
void SetResTexture(int texIndex, ResTexture *texture)
Definition g3d_MaterialObj.h:171
T * EditShaderParam(int paramIndex)
Definition g3d_MaterialObj.h:118
bool IsMatBlockDirty() const
Definition g3d_MaterialObj.h:152
const ResSampler * GetResSampler(int samplerIndex) const
Definition g3d_MaterialObj.h:203
void * m_pSrcParam
Definition g3d_MaterialObj.h:244
ResMaterial * m_pRes
Definition g3d_MaterialObj.h:237
const void * GetSrcParam() const
Definition g3d_MaterialObj.h:148
void * m_pBufferPtr
Definition g3d_MaterialObj.h:248
ResShaderParam * GetResShaderParam(const char *name)
Definition g3d_MaterialObj.h:92
MaterialObj()
Definition g3d_MaterialObj.h:27
const ResSampler * GetResSampler(const char *name) const
Definition g3d_MaterialObj.h:210
const void * GetShaderParam(int paramIndex) const
Definition g3d_MaterialObj.h:112
ResTexture ** m_ppTextureArray
Definition g3d_MaterialObj.h:245
const char * GetSamplerName(int samplerIndex) const
Definition g3d_MaterialObj.h:191
ResTexture * GetResTexture(int texIndex)
Definition g3d_MaterialObj.h:159
int GetSamplerCount() const
Definition g3d_MaterialObj.h:189
ResMaterial * GetResource()
Definition g3d_MaterialObj.h:41
void * GetBlockBufferPtr()
Definition g3d_MaterialObj.h:47
const char * GetShaderParamName(int paramIndex) const
Definition g3d_MaterialObj.h:75
const ResMaterial * GetResource() const
Definition g3d_MaterialObj.h:43
void EnableBlockSwap()
Definition g3d_MaterialObj.h:55
ResSampler * GetResSampler(int samplerIndex)
Definition g3d_MaterialObj.h:198
int GetSamplerIndex(const char *name) const
Definition g3d_MaterialObj.h:196
const GfxBuffer & GetMatBlock() const
Definition g3d_MaterialObj.h:53
void * m_pUserPtr
Definition g3d_MaterialObj.h:247
void * GetSrcParam()
Definition g3d_MaterialObj.h:146
bool IsBlockSwapEnabled() const
Definition g3d_MaterialObj.h:59
Flag
Definition g3d_MaterialObj.h:214
@ BLOCK_BUFFER_SWAP
Definition g3d_MaterialObj.h:216
@ PARAM_DIRTY
Definition g3d_MaterialObj.h:217
@ BLOCK_BUFFER_VALID
Definition g3d_MaterialObj.h:215
@ MAX_TEXTURE
Definition g3d_MaterialObj.h:15
bool SetupBlockBuffer(void *pBuffer, size_t bufferSize)
Definition g3d_MaterialObj.cpp:69
void CleanupBlockBuffer()
int GetShaderParamCount() const
Definition g3d_MaterialObj.h:73
bit32 m_Flag
Definition g3d_MaterialObj.h:239
GfxBuffer m_MatBlock
Definition g3d_MaterialObj.h:243
void ClearTexture()
Definition g3d_MaterialObj.h:177
void * GetBufferPtr()
Definition g3d_MaterialObj.h:45
const ResRenderState * GetResRenderState() const
Definition g3d_MaterialObj.h:187
Alignment
Definition g3d_MaterialObj.h:21
@ BUFFER_ALIGNMENT
Definition g3d_MaterialObj.h:22
@ BLOCK_BUFFER_ALIGNMENT
Definition g3d_MaterialObj.h:24
void SetDirtyFlag(int paramIndex)
Definition g3d_MaterialObj.h:220
bool ConvertDirtyParams(void *pBuffer)
Definition g3d_MaterialObj.cpp:111
void CalcMatBlock()
Definition g3d_MaterialObj.cpp:93
void ClearShaderParam()
Definition g3d_MaterialObj.h:139
size_t CalcBlockBufferSize() const
Definition g3d_MaterialObj.h:33
const T * GetUserPtr() const
Definition g3d_MaterialObj.h:71
void DisableBlockSwap()
Definition g3d_MaterialObj.h:57
void * GetUserPtr()
Definition g3d_MaterialObj.h:63
ResRenderState * GetResRenderState()
Definition g3d_MaterialObj.h:185
static size_t CalcBufferSize(const InitArg &arg)
Definition g3d_MaterialObj.cpp:22
void SetUserPtr(void *pUserPtr)
Definition g3d_MaterialObj.h:61
int GetShaderParamIndex(const char *name) const
Definition g3d_MaterialObj.h:80
void * m_pBlockBuffer
Definition g3d_MaterialObj.h:249
const ResShaderParam * GetResShaderParam(const char *name) const
Definition g3d_MaterialObj.h:97
bit32 * m_pDirtyFlagArray
Definition g3d_MaterialObj.h:241
Definition g3d_Sizer.h:10
Sizer()
Definition g3d_Sizer.h:18
Definition g3d_GfxObject.h:48
Definition g3d_ResMaterial.h:375
ResTextureRef * GetTextureRef(int texIndex)
Definition g3d_ResMaterial.h:428
int GetTextureCount() const
Definition g3d_ResMaterial.h:426
Definition g3d_ResMaterial.h:125
Definition g3d_ResMaterial.h:274
Definition g3d_ResMaterial.h:301
@ TYPE_TEXSRTEX
Definition g3d_ResMaterial.h:314
Type GetType() const
Definition g3d_ResMaterial.h:325
Definition g3d_ResTexture.h:32
#define NW_G3D_ASSERT_NOT_NULL(exp)
Definition g3d_assert.h:20
#define NW_G3D_ASSERTMSG(exp,...)
Definition g3d_assert.h:13
#define NW_G3D_ASSERT_INDEX_BOUNDS(index, size)
Definition g3d_assert.h:23
#define NW_G3D_DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition g3d_defs.h:81
u32 bit32
Definition g3d_defs.h:131
Definition g3d_GfxManage.cpp:10
Definition g3d_Sizer.h:13