1#ifndef NW_G3D_FND_GFXOBJECT_H_
2#define NW_G3D_FND_GFXOBJECT_H_
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/fnd/g3d_GX2Struct.h>
7#define NW_G3D_GFX_OBJECT(class_name) public
10 typedef class_name self_type;
11 typedef class_name##_t base_type;
12 static self_type* DownCast(base_type* ptr) { return static_cast<self_type*>(ptr); }
13 static const self_type* DownCast(const base_type* ptr)
14 { return static_cast<const self_type*>(ptr); }
15 static self_type& DownCast(base_type& ref) { return static_cast<self_type&>(ref); }
16 static const self_type& DownCast(const base_type& ref)
17 { return static_cast<const self_type&>(ref); } private
22namespace nw {
namespace g3d {
namespace fnd {
55 void DCFlush(
int bufferIndex = 0)
const;
57
58
59
67
68
69
70
72 void SetData(
void* pData, u32 size,
int bufferingCount = 1);
74 void*
GetData(
int bufferIndex = 0);
75 const void*
GetData(
int bufferIndex = 0)
const;
81 void SetStride(u32 stride) {
this->stride =
static_cast<u16>(stride); }
85
86
87
88
113 return reinterpret_cast<GX2Sampler*>(&gx2Sampler);
118 return reinterpret_cast<
const GX2Sampler*>(&gx2Sampler);
122
123
124
125
126
127
128
136
137
138
139
140
141
150
151
152
153
194 return reinterpret_cast<GX2Texture*>(&
gx2Texture);
199 return reinterpret_cast<
const GX2Texture*>(&
gx2Texture);
222
223
224
286 return divisorIndex < 2 ?
static_cast<u32>(divisorIndex) :
gx2FetchShader._divisors[divisorIndex - 2];
292
293
294
298 void SetDefault() { SetDefault(GetGX2FetchShader()->shaderPtr); }
302 SetLocation(GetGX2FetchShader()->shaderPtr, attribIndex, location);
307 return GetLocation(GetGX2FetchShader()->shaderPtr, attribIndex);
312 SetBufferSlot(GetGX2FetchShader()->shaderPtr, attribIndex, slot);
316
317
318
319
323 SetFormat(GetGX2FetchShader()->shaderPtr, attribIndex, format);
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
350 return GetDivisorSlot(GetGX2FetchShader()->shaderPtr, attribIndex);
355 SetOffset(GetGX2FetchShader()->shaderPtr, attribIndex, offset);
360 return GetOffset(GetGX2FetchShader()->shaderPtr, attribIndex);
366 return GetVFInst(GetGX2FetchShader()->shaderPtr, attribIndex);
371 return GetVFInst(GetGX2FetchShader()->shaderPtr, attribIndex);
378 void SetLocation(
void* pShader,
int attribIndex, u32 location);
381 void SetBufferSlot(
void* pShader,
int attribIndex, u32 slot);
384 void SetFormat(
void* pShader,
int attribIndex, GX2AttribFormat format);
386
387
388
389
390
391
392
395 void SetOffset(
void* pShader,
int attribIndex, u32 offset);
396 u32 GetOffset(
const void* pShader,
int attribIndex)
const;
400 const u32*
GetVFInst(
const void* pShader,
int attribIndex)
const;
408
409
410
411
416
417
418
Definition g3d_GfxObject.h:48
const void * GetData(int bufferIndex=0) const
Definition g3d_GfxObject.cpp:232
void UpdateRegs()
Definition g3d_GfxObject.cpp:163
void LoadIndices() const
Definition g3d_GfxObject.cpp:177
void LoadVertices(u32 slot) const
Definition g3d_GfxObject.cpp:181
void SetData(void *pData, u32 size, int bufferingCount=1)
Definition g3d_GfxObject.cpp:207
void LoadGeometryUniforms(u32 location, int bufferIndex=0) const
Definition g3d_GfxObject.cpp:193
u32 GetStride() const
Definition g3d_GfxObject.h:82
void Cleanup()
Definition g3d_GfxObject.cpp:159
int GetBufferingCount() const
Definition g3d_GfxObject.h:77
void * GetData(int bufferIndex=0)
Definition g3d_GfxObject.cpp:221
void LoadFragmentUniforms(u32 location, int bufferIndex=0) const
Definition g3d_GfxObject.cpp:200
void Setup()
Definition g3d_GfxObject.cpp:155
u32 GetSize() const
Definition g3d_GfxObject.h:79
void DCFlush(int bufferIndex=0) const
Definition g3d_GfxObject.cpp:167
void SetStride(u32 stride)
Definition g3d_GfxObject.h:81
void LoadVertexUniforms(u32 location, int bufferIndex=0) const
Definition g3d_GfxObject.cpp:186
Definition g3d_GfxObject.h:238
const void * GetShaderPtr() const
Definition g3d_GfxObject.cpp:488
u32 GetOffset(int attribIndex) const
Definition g3d_GfxObject.h:358
const u32 * GetVFInst(const void *pShader, int attribIndex) const
Definition g3d_GfxObject.cpp:621
u32 * GetVFInst(int attribIndex)
Definition g3d_GfxObject.h:364
void SetShaderPtr(void *ptr)
Definition g3d_GfxObject.cpp:468
void DCFlush() const
Definition g3d_GfxObject.cpp:433
void LoadVertexAttribArray(u32 idxAttrib, const GfxBuffer *pBuffer) const
Definition g3d_GfxObject.cpp:627
void Cleanup()
Definition g3d_GfxObject.cpp:429
u32 GetDivisor(int divisorIndex) const
Definition g3d_GfxObject.h:283
void SetBufferSlot(void *pShader, int attribIndex, u32 slot)
Definition g3d_GfxObject.cpp:552
@ VF_INST_SIZE
Definition g3d_GfxObject.h:246
@ FETCH_INST_ALIGNMENT
Definition g3d_GfxObject.h:244
@ CF_INST_SIZE
Definition g3d_GfxObject.h:245
@ MAX_INST_PER_FETCH_CLAUSE
Definition g3d_GfxObject.h:243
void SetDefault(void *pShader)
Definition g3d_GfxObject.cpp:497
u32 GetDivisorSlot(const void *pShader, int attribIndex) const
Definition g3d_GfxObject.cpp:589
void Setup()
Definition g3d_GfxObject.cpp:425
u32 GetAttribCount() const
Definition g3d_GfxObject.h:274
u32 GetShaderSize() const
Definition g3d_GfxObject.h:275
void SetFormat(void *pShader, int attribIndex, GX2AttribFormat format)
Definition g3d_GfxObject.cpp:562
void SetBufferSlot(int attribIndex, u32 slot)
Definition g3d_GfxObject.h:310
GX2FetchShader * GetGX2FetchShader()
Definition g3d_GfxObject.h:263
const GfxBuffer * GetVertexBuffer(int attribIndex) const
Definition g3d_GfxObject.cpp:462
void SetOffset(void *pShader, int attribIndex, u32 offset)
Definition g3d_GfxObject.cpp:598
void SetDefault()
Definition g3d_GfxObject.h:298
u32 GetDivisorSlot(int attribIndex) const
Definition g3d_GfxObject.h:348
void LoadVertexAttribValue() const
Definition g3d_GfxObject.cpp:637
const GX2FetchShader * GetGX2FetchShader() const
Definition g3d_GfxObject.h:268
void SetFormat(int attribIndex, GX2AttribFormat format)
Definition g3d_GfxObject.h:321
void SetVertexBuffer(int attribIndex, const GfxBuffer *pBuffer)
Definition g3d_GfxObject.cpp:455
void SetAttribCount(u32 count)
Definition g3d_GfxObject.h:273
const u32 * GetVFInst(int attribIndex) const
Definition g3d_GfxObject.h:369
void SetLocation(void *pShader, int attribIndex, u32 location)
Definition g3d_GfxObject.cpp:535
u32 * GetVFInst(void *pShader, int attribIndex)
Definition g3d_GfxObject.cpp:615
u32 GetLocation(int attribIndex) const
Definition g3d_GfxObject.h:305
@ SHADER_ALIGNMENT
Definition g3d_GfxObject.h:252
void LoadVertexAttribArray() const
Definition g3d_GfxObject.cpp:633
void Load() const
Definition g3d_GfxObject.cpp:450
void * GetShaderPtr()
Definition g3d_GfxObject.cpp:479
void CalcSize()
Definition g3d_GfxObject.cpp:442
u32 GetOffset(const void *pShader, int attribIndex) const
Definition g3d_GfxObject.cpp:607
void SetLocation(int attribIndex, u32 location)
Definition g3d_GfxObject.h:300
void SetOffset(int attribIndex, u32 offset)
Definition g3d_GfxObject.h:353
u32 GetLocation(const void *pShader, int attribIndex) const
Definition g3d_GfxObject.cpp:544
Definition g3d_GfxObject.h:98
GX2TexXYFilterType GetMinFilter() const
Definition g3d_GfxObject.cpp:294
GX2TexMipFilterType GetMipFilter() const
Definition g3d_GfxObject.cpp:299
float GetLODBias() const
Definition g3d_GfxObject.cpp:321
void LoadGeometrySampler(u32 unit) const
Definition g3d_GfxObject.cpp:259
GX2TexXYFilterType GetMagFilter() const
Definition g3d_GfxObject.cpp:289
void LoadFragmentSampler(u32 unit) const
Definition g3d_GfxObject.cpp:264
GX2TexAnisoRatio GetMaxAniso() const
Definition g3d_GfxObject.cpp:304
GX2TexBorderType GetBorderType() const
Definition g3d_GfxObject.cpp:284
void LoadVertexSampler(u32 unit) const
Definition g3d_GfxObject.cpp:254
GX2Boolean GetCompareEnable() const
Definition g3d_GfxObject.cpp:327
GX2Sampler * GetGX2Sampler()
Definition g3d_GfxObject.h:111
GX2TexClamp GetClampX() const
Definition g3d_GfxObject.cpp:269
void Cleanup()
Definition g3d_GfxObject.cpp:246
GX2TexClamp GetClampZ() const
Definition g3d_GfxObject.cpp:279
float GetMaxLOD() const
Definition g3d_GfxObject.cpp:315
void UpdateRegs()
Definition g3d_GfxObject.cpp:250
const GX2Sampler * GetGX2Sampler() const
Definition g3d_GfxObject.h:116
GX2CompareFunction GetCompareFunc() const
Definition g3d_GfxObject.cpp:332
float GetMinLOD() const
Definition g3d_GfxObject.cpp:309
GX2TexClamp GetClampY() const
Definition g3d_GfxObject.cpp:274
void Setup()
Definition g3d_GfxObject.cpp:242
Definition g3d_GfxObject.h:176
GX2Texture * GetGX2Texture()
Definition g3d_GfxObject.h:192
void LoadVertexTexture(u32 unit) const
Definition g3d_GfxObject.cpp:405
void Cleanup()
Definition g3d_GfxObject.cpp:343
u32 GetDepth() const
Definition g3d_GfxObject.h:208
u32 GetPitch() const
Definition g3d_GfxObject.h:227
u32 GetMipSize() const
Definition g3d_GfxObject.h:211
void Setup()
Definition g3d_GfxObject.cpp:338
const void * GetMipPtr() const
Definition g3d_GfxObject.cpp:396
void UpdateRegs()
Definition g3d_GfxObject.cpp:347
u32 GetWidth() const
Definition g3d_GfxObject.h:206
void LoadGeometryTexture(u32 unit) const
Definition g3d_GfxObject.cpp:410
u32 GetBaseSize() const
Definition g3d_GfxObject.h:210
u32 GetMipLevels() const
Definition g3d_GfxObject.h:209
u32 GetAlignment() const
Definition g3d_GfxObject.h:226
void SetImagePtrs(void *basePtr, void *mipPtr)
Definition g3d_GfxObject.cpp:369
void DCFlush() const
Definition g3d_GfxObject.cpp:352
void LoadFragmentTexture(u32 unit) const
Definition g3d_GfxObject.cpp:415
GX2SurfaceDim GetDimension() const
Definition g3d_GfxObject.h:204
u32 GetHeight() const
Definition g3d_GfxObject.h:207
const GX2Texture * GetGX2Texture() const
Definition g3d_GfxObject.h:197
const void * GetBasePtr() const
Definition g3d_GfxObject.cpp:387
GX2SurfaceFormat GetFormat() const
Definition g3d_GfxObject.h:205
#define NW_G3D_GFX_OBJECT(class_name)
Definition g3d_GfxObject.h:7
#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
#define NW_G3D_HOST_PTRSIZE
Definition g3d_defs.h:40
#define NW_G3D_TARGET_PTRSIZE
Definition g3d_defs.h:34
Definition g3d_GX2Struct.h:12
::GX2FetchShader GX2FetchShaderData
Definition g3d_GX2Struct.h:19
::GX2Texture GX2TextureData
Definition g3d_GX2Struct.h:15
Definition g3d_GfxManage.cpp:10
void SetPrimitiveRestartIndex(u32 restartIndex)
Definition g3d_GfxObject.cpp:641
Definition g3d_GfxManage.cpp:10
Definition g3d_GfxObject.h:25
u16 numBuffering
Definition g3d_GfxObject.h:36
GX2StreamOutContext * pCtxPtr
Definition g3d_GfxObject.h:41
u32 dataUIntPtr
Definition g3d_GfxObject.h:31
u32 size
Definition g3d_GfxObject.h:33
u16 stride
Definition g3d_GfxObject.h:35
void * pData
Definition g3d_GfxObject.h:29
u32 ctxUIntPtr
Definition g3d_GfxObject.h:43
u32 handle
Definition g3d_GfxObject.h:34
Definition g3d_GfxObject.h:231
internal::GX2FetchShaderData gx2FetchShader
Definition g3d_GfxObject.h:232
u32 handle
Definition g3d_GfxObject.h:234
u32 ofsVFInst
Definition g3d_GfxObject.h:233
Definition g3d_GfxObject.h:92
GX2Sampler gx2Sampler
Definition g3d_GfxObject.h:93
u32 handle
Definition g3d_GfxObject.h:94
Definition g3d_GfxObject.h:169
u32 handle
Definition g3d_GfxObject.h:171
internal::GX2TextureData gx2Texture
Definition g3d_GfxObject.h:170
u32 arrayLength
Definition g3d_GfxObject.h:172