1#ifndef NW_G3D_RES_RESMATERIAL_H_
2#define NW_G3D_RES_RESMATERIAL_H_
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/fnd/g3d_GfxObject.h>
6#include <nw/g3d/math/g3d_Vector3.h>
7#include <nw/g3d/math/g3d_Vector4.h>
8#include <nw/g3d/math/g3d_Matrix34.h>
9#include <nw/g3d/fnd/g3d_GfxState.h>
10#include <nw/g3d/res/g3d_ResCommon.h>
11#include <nw/g3d/res/g3d_ResDictionary.h>
12#include <nw/g3d/res/g3d_Binding.h>
13#include <nw/g3d/res/g3d_ResTexture.h>
14#include <nw/g3d/res/g3d_ResUserData.h>
16namespace nw {
namespace g3d {
namespace res {
93 return reinterpret_cast<
const int*>(ref().iValue);
99 return reinterpret_cast<
const float*>(ref().fValue);
106 return ref().ofsString[strIndex].to_ptr();
323 void Convert(
void* pDst,
const void* pSrc)
const;
396 int GetIndex()
const {
return static_cast<
int>(ref().index); }
406 template <
typename T>
409 template <
typename T>
414 bool HasVolatile()
const {
return ref().numShaderParamVolatile > 0; }
423 ref().numTexture =
static_cast<u8>(textureCount);
446 return AddOffset(ref().ofsSrcParam.to_ptr(),
static_cast<size_t>(GetShaderParam(paramIndex)->GetSrcOffset()));
451 return AddOffset(ref().ofsSrcParam.to_ptr(),
static_cast<size_t>(GetShaderParam(paramIndex)->GetSrcOffset()));
454 template <
typename T>
459 return AddOffset<T>(ref().ofsSrcParam.to_ptr(), pParam->GetSrcOffset());
462 template <
typename T>
467 return AddOffset<T>(ref().ofsSrcParam.to_ptr(), pParam->GetSrcOffset());
Definition g3d_GfxState.h:127
Definition g3d_GfxState.h:215
Definition g3d_GfxState.h:181
Definition g3d_GfxState.h:152
Definition g3d_GfxState.h:74
Definition g3d_GfxState.h:29
Definition g3d_GfxObject.h:98
Definition g3d_Matrix34.h:34
Definition g3d_Vector3.h:30
Definition g3d_ResCommon.h:109
BinPtr & set_ptr(void *ptr)
Definition g3d_ResCommon.h:143
const void * to_ptr() const
Definition g3d_ResCommon.h:121
void * to_ptr()
Definition g3d_ResCommon.h:119
Definition g3d_ResCommon.h:93
Definition g3d_ResFile.h:131
Definition g3d_Binding.h:16
Definition g3d_ResCommon.h:62
Definition g3d_ResFile.h:62
Definition g3d_ResMaterial.h:375
ResTextureRef * GetTextureRef(int texIndex)
Definition g3d_ResMaterial.h:428
Flag
Definition g3d_ResMaterial.h:382
@ VISIBILITY
Definition g3d_ResMaterial.h:383
Signature
Definition g3d_ResMaterial.h:379
@ SIGNATURE
Definition g3d_ResMaterial.h:379
const T * GetUserPtr() const
Definition g3d_ResMaterial.h:410
void SetRawParamSize(u32 size)
Definition g3d_ResMaterial.h:474
int GetTextureCount() const
Definition g3d_ResMaterial.h:426
const void * GetSrcParam(int paramIndex) const
Definition g3d_ResMaterial.h:449
T * GetUserPtr()
Definition g3d_ResMaterial.h:407
void SetUserPtr(void *pUserPtr)
Definition g3d_ResMaterial.h:400
T * GetSrcParam(int paramIndex)
Definition g3d_ResMaterial.h:455
void Cleanup()
Definition g3d_ResMaterial.cpp:363
void * GetSrcParam(int paramIndex)
Definition g3d_ResMaterial.h:444
BindResult Bind(const ResFile *pFile)
Definition g3d_ResMaterial.cpp:336
u32 GetRawParamSize() const
Definition g3d_ResMaterial.h:472
const void * GetUserPtr() const
Definition g3d_ResMaterial.h:404
bool ForceBind(const ResTexture *pTexture, const char *name)
BindResult Bind(const ResFile *pFile, BindCallback *pCallback)
const ResTextureRef * GetTextureRef(int texIndex) const
Definition g3d_ResMaterial.h:435
const T * GetSrcParam(int paramIndex) const
Definition g3d_ResMaterial.h:463
u32 GetSrcParamSize() const
Definition g3d_ResMaterial.h:470
int GetIndex() const
Definition g3d_ResMaterial.h:396
void * GetUserPtr()
Definition g3d_ResMaterial.h:402
int GetShaderParamVolatileCount() const
Definition g3d_ResMaterial.h:412
void Setup()
Definition g3d_ResMaterial.cpp:354
bool HasVolatile() const
Definition g3d_ResMaterial.h:414
void SetTextureCount(int textureCount)
Definition g3d_ResMaterial.h:420
Definition g3d_ResMaterial.h:73
Type GetType() const
Definition g3d_ResMaterial.h:88
const float * GetFloat() const
Definition g3d_ResMaterial.h:96
Type
Definition g3d_ResMaterial.h:78
@ STRING
Definition g3d_ResMaterial.h:81
@ INT
Definition g3d_ResMaterial.h:79
@ FLOAT
Definition g3d_ResMaterial.h:80
const int * GetInt() const
Definition g3d_ResMaterial.h:90
const char * GetString(int strIndex) const
Definition g3d_ResMaterial.h:102
int GetArrayLength() const
Definition g3d_ResMaterial.h:86
Definition g3d_ResMaterial.h:125
const GfxAlphaTest & GetAlphaTest() const
Definition g3d_ResMaterial.h:200
void AdjustBlendMode(BlendMode mode)
void SetBlendMode(BlendMode mode)
Definition g3d_ResMaterial.h:170
GfxAlphaTest & GetAlphaTest()
Definition g3d_ResMaterial.h:195
const GfxPolygonCtrl & GetPolygonCtrl() const
Definition g3d_ResMaterial.h:180
const GfxBlendCtrl & GetBlendCtrl() const
Definition g3d_ResMaterial.h:220
GfxBlendColor & GetBlendColor()
Definition g3d_ResMaterial.h:225
BlendMode GetBlendMode() const
Definition g3d_ResMaterial.h:165
GfxColorCtrl & GetColorCtrl()
Definition g3d_ResMaterial.h:205
GfxBlendCtrl & GetBlendCtrl()
Definition g3d_ResMaterial.h:215
Flag
Definition g3d_ResMaterial.h:130
@ MODE_SHIFT
Definition g3d_ResMaterial.h:131
@ MODE_MASK
Definition g3d_ResMaterial.h:132
@ BLEND_MASK
Definition g3d_ResMaterial.h:134
@ BLEND_SHIFT
Definition g3d_ResMaterial.h:133
void Load() const
Definition g3d_ResMaterial.cpp:278
BlendMode
Definition g3d_ResMaterial.h:146
@ BLEND_NONE
Definition g3d_ResMaterial.h:147
@ BLEND_LOGICAL
Definition g3d_ResMaterial.h:149
@ BLEND_COLOR
Definition g3d_ResMaterial.h:148
const GfxBlendColor & GetBlendColor() const
Definition g3d_ResMaterial.h:230
GfxDepthCtrl & GetDepthCtrl()
Definition g3d_ResMaterial.h:185
const GfxColorCtrl & GetColorCtrl() const
Definition g3d_ResMaterial.h:210
GfxPolygonCtrl & GetPolygonCtrl()
Definition g3d_ResMaterial.h:175
Mode GetMode() const
Definition g3d_ResMaterial.h:158
void SetMode(Mode mode)
Definition g3d_ResMaterial.h:160
const GfxDepthCtrl & GetDepthCtrl() const
Definition g3d_ResMaterial.h:190
Mode
Definition g3d_ResMaterial.h:138
@ MODE_OPAQUE
Definition g3d_ResMaterial.h:140
@ MODE_CUSTOM
Definition g3d_ResMaterial.h:139
@ MODE_ALPHAMASK
Definition g3d_ResMaterial.h:141
@ MODE_TRANSLUCENT
Definition g3d_ResMaterial.h:142
void AdjustMode(Mode mode)
Definition g3d_ResMaterial.h:274
void Cleanup()
Definition g3d_ResMaterial.cpp:293
GfxSampler * GetGfxSampler()
Definition g3d_ResMaterial.h:285
int GetIndex() const
Definition g3d_ResMaterial.h:283
const GfxSampler * GetGfxSampler() const
Definition g3d_ResMaterial.h:287
void Setup()
Definition g3d_ResMaterial.cpp:288
Definition g3d_ResMaterial.h:250
Definition g3d_ResMaterial.h:301
Type
Definition g3d_ResMaterial.h:306
@ TYPE_RESERVED2
Definition g3d_ResMaterial.h:311
@ TYPE_FLOAT3x3
Definition g3d_ResMaterial.h:312
@ NUM_TYPE
Definition g3d_ResMaterial.h:315
@ TYPE_UINT2
Definition g3d_ResMaterial.h:309
@ TYPE_UINT3
Definition g3d_ResMaterial.h:309
@ TYPE_RESERVED4
Definition g3d_ResMaterial.h:313
@ TYPE_BOOL
Definition g3d_ResMaterial.h:307
@ TYPE_BOOL2
Definition g3d_ResMaterial.h:307
@ TYPE_UINT
Definition g3d_ResMaterial.h:309
@ TYPE_INT3
Definition g3d_ResMaterial.h:308
@ TYPE_FLOAT2
Definition g3d_ResMaterial.h:310
@ TYPE_INT2
Definition g3d_ResMaterial.h:308
@ TYPE_INT
Definition g3d_ResMaterial.h:308
@ TYPE_FLOAT2x3
Definition g3d_ResMaterial.h:311
@ TYPE_FLOAT2x4
Definition g3d_ResMaterial.h:311
@ TYPE_TEXSRT
Definition g3d_ResMaterial.h:314
@ TYPE_FLOAT4x2
Definition g3d_ResMaterial.h:313
@ TYPE_FLOAT3x4
Definition g3d_ResMaterial.h:312
@ TYPE_RESERVED3
Definition g3d_ResMaterial.h:312
@ TYPE_FLOAT2x2
Definition g3d_ResMaterial.h:311
@ TYPE_SRT2D
Definition g3d_ResMaterial.h:314
@ TYPE_BOOL3
Definition g3d_ResMaterial.h:307
@ TYPE_TEXSRTEX
Definition g3d_ResMaterial.h:314
@ TYPE_FLOAT3x2
Definition g3d_ResMaterial.h:312
@ TYPE_FLOAT4x3
Definition g3d_ResMaterial.h:313
@ TYPE_FLOAT
Definition g3d_ResMaterial.h:310
@ TYPE_FLOAT4x4
Definition g3d_ResMaterial.h:313
@ TYPE_INT4
Definition g3d_ResMaterial.h:308
@ TYPE_SRT3D
Definition g3d_ResMaterial.h:314
@ TYPE_FLOAT4
Definition g3d_ResMaterial.h:310
@ TYPE_FLOAT3
Definition g3d_ResMaterial.h:310
@ TYPE_UINT4
Definition g3d_ResMaterial.h:309
@ TYPE_BOOL4
Definition g3d_ResMaterial.h:307
Type GetType() const
Definition g3d_ResMaterial.h:325
size_t GetSrcSize() const
Definition g3d_ResMaterial.h:335
s32 GetOffset() const
Definition g3d_ResMaterial.h:327
size_t(* ConvertParamCallback)(void *pDst, const void *pSrc, Type srcType, const void *pUserPtr)
Definition g3d_ResMaterial.h:318
void Convert(void *pDst, const void *pSrc) const
Definition g3d_ResMaterial.cpp:299
s32 GetSrcOffset() const
Definition g3d_ResMaterial.h:331
void SetOffset(s32 offset)
Definition g3d_ResMaterial.h:329
Definition g3d_ResTexture.h:70
Definition g3d_ResTexture.h:32
#define NW_G3D_RES_COMMON(class_name)
Definition g3d_ResCommon.h:30
#define NW_G3D_RES_FIELD_STR_DIC_DECL(name)
Definition g3d_ResDefs.h:67
#define NW_G3D_RES_FIELD_CLASS_NAMED_ARRAY_DECL(type, name)
Definition g3d_ResDefs.h:108
#define NW_G3D_RES_FIELD_CLASS_DECL(type, name)
Definition g3d_ResDefs.h:124
#define NW_G3D_RES_ASSERT_INDEX(name, idx)
Definition g3d_ResDefs.h:6
#define NW_G3D_RES_FIELD_STRING_DECL(name)
Definition g3d_ResDefs.h:137
#define NW_G3D_RES_FIELD_DIC_DECL(type, name)
Definition g3d_ResDefs.h:51
#define NW_G3D_ASSERT_INDEX_BOUNDS(index, size)
Definition g3d_assert.h:23
#define NW_G3D_ASSERT(exp)
Definition g3d_assert.h:17
#define NW_G3D_HOST_PTRSIZE
Definition g3d_defs.h:40
u32 bit32
Definition g3d_defs.h:131
#define NW_G3D_MAKE_U8X4_AS_U32(a, b, c, d)
Definition g3d_defs.h:90
#define NW_G3D_TARGET_PTRSIZE
Definition g3d_defs.h:34
Definition g3d_defs.h:122
ResRenderInfoData ResEnvRefData
Definition g3d_ResMaterial.h:110
ResRenderInfo ResEnvRef
Definition g3d_ResMaterial.h:111
Definition g3d_GfxManage.cpp:10
Definition g3d_GfxState.h:122
Definition g3d_GfxState.h:210
Definition g3d_GfxState.h:176
Definition g3d_GfxState.h:147
Definition g3d_GfxState.h:69
Definition g3d_GfxState.h:24
Definition g3d_GfxObject.h:92
Definition g3d_ResMaterial.h:343
Offset ofsTextureRefArray
Definition g3d_ResMaterial.h:363
u16 numShaderParamVolatile
Definition g3d_ResMaterial.h:355
u16 numShaderParam
Definition g3d_ResMaterial.h:354
Offset ofsSrcParam
Definition g3d_ResMaterial.h:368
Offset ofsUserDataDic
Definition g3d_ResMaterial.h:369
u16 numUserData
Definition g3d_ResMaterial.h:358
bit32 flag
Definition g3d_ResMaterial.h:348
u8 numTexture
Definition g3d_ResMaterial.h:352
u16 numRenderInfo
Definition g3d_ResMaterial.h:350
BinPtr pUserPtr
Definition g3d_ResMaterial.h:371
Offset ofsShaderParamArray
Definition g3d_ResMaterial.h:366
Offset ofsSamplerDic
Definition g3d_ResMaterial.h:365
u8 numSampler
Definition g3d_ResMaterial.h:351
Offset ofsRenderInfoDic
Definition g3d_ResMaterial.h:360
Offset ofsShaderAssign
Definition g3d_ResMaterial.h:362
BinaryBlockHeader blockHeader
Definition g3d_ResMaterial.h:344
BinString ofsName
Definition g3d_ResMaterial.h:346
Offset ofsShaderParamDic
Definition g3d_ResMaterial.h:367
u16 srcParamSize
Definition g3d_ResMaterial.h:356
Offset ofsSamplerArray
Definition g3d_ResMaterial.h:364
u16 rawParamSize
Definition g3d_ResMaterial.h:357
u16 index
Definition g3d_ResMaterial.h:349
Offset ofsRenderState
Definition g3d_ResMaterial.h:361
Definition g3d_ResMaterial.h:59
BinString ofsName
Definition g3d_ResMaterial.h:63
BinString ofsString[1]
Definition g3d_ResMaterial.h:68
f32 fValue[1]
Definition g3d_ResMaterial.h:67
u8 type
Definition g3d_ResMaterial.h:61
u16 arrayLength
Definition g3d_ResMaterial.h:60
s32 iValue[1]
Definition g3d_ResMaterial.h:66
u8 reserved
Definition g3d_ResMaterial.h:62
Definition g3d_ResMaterial.h:114
GfxBlendCtrl_t blendCtrl
Definition g3d_ResMaterial.h:120
GfxDepthCtrl_t depthCtrl
Definition g3d_ResMaterial.h:117
GfxPolygonCtrl_t polygonCtrl
Definition g3d_ResMaterial.h:116
GfxAlphaTest_t alphaTest
Definition g3d_ResMaterial.h:118
bit32 flag
Definition g3d_ResMaterial.h:115
GfxBlendColor_t blendColor
Definition g3d_ResMaterial.h:121
GfxColorCtrl_t colorCtrl
Definition g3d_ResMaterial.h:119
Definition g3d_ResMaterial.h:265
u8 reserved0
Definition g3d_ResMaterial.h:269
u8 index
Definition g3d_ResMaterial.h:268
BinString ofsName
Definition g3d_ResMaterial.h:267
GfxSampler_t gfxSampler
Definition g3d_ResMaterial.h:266
u16 reserved1
Definition g3d_ResMaterial.h:270
Definition g3d_ResMaterial.h:237
u8 numSamplerAssign
Definition g3d_ResMaterial.h:242
Offset ofsSamplerAssignDic
Definition g3d_ResMaterial.h:245
u16 numShaderOption
Definition g3d_ResMaterial.h:243
BinString ofsShaderArchiveName
Definition g3d_ResMaterial.h:238
u32 revision
Definition g3d_ResMaterial.h:240
u8 numAttribAssign
Definition g3d_ResMaterial.h:241
BinString ofsShadingModelName
Definition g3d_ResMaterial.h:239
Offset ofsAttribAssignDic
Definition g3d_ResMaterial.h:244
Offset ofsShaderOptionDic
Definition g3d_ResMaterial.h:246
Definition g3d_ResMaterial.h:291
u16 srcOffset
Definition g3d_ResMaterial.h:294
u8 srcSize
Definition g3d_ResMaterial.h:293
BinString ofsId
Definition g3d_ResMaterial.h:297
s32 offset
Definition g3d_ResMaterial.h:295
u8 type
Definition g3d_ResMaterial.h:292
Definition g3d_ResTexture.h:64
Definition g3d_ResMaterial.h:22
float sy
Definition g3d_ResMaterial.h:23
float ty
Definition g3d_ResMaterial.h:23
float tx
Definition g3d_ResMaterial.h:23
float sx
Definition g3d_ResMaterial.h:23
float r
Definition g3d_ResMaterial.h:23
Definition g3d_ResMaterial.h:27
Vec3 rotate
Definition g3d_ResMaterial.h:28
Vec3 scale
Definition g3d_ResMaterial.h:28
Vec3 translate
Definition g3d_ResMaterial.h:28
Definition g3d_ResMaterial.h:47
TexSrt srt
Definition g3d_ResMaterial.h:48
u32 padding
Definition g3d_ResMaterial.h:54
Mtx34 * pEffectMtx
Definition g3d_ResMaterial.h:52
Definition g3d_ResMaterial.h:32
float tx
Definition g3d_ResMaterial.h:42
Mode mode
Definition g3d_ResMaterial.h:41
float sx
Definition g3d_ResMaterial.h:42
float sy
Definition g3d_ResMaterial.h:42
Mode
Definition g3d_ResMaterial.h:34
@ NUM_MODE
Definition g3d_ResMaterial.h:38
@ MODE_3DSMAX
Definition g3d_ResMaterial.h:36
@ MODE_MAYA
Definition g3d_ResMaterial.h:35
@ MODE_SOFTIMAGE
Definition g3d_ResMaterial.h:37
float r
Definition g3d_ResMaterial.h:42
float ty
Definition g3d_ResMaterial.h:42