New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ModelG3d.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/LightMapMgr.h>
4#include <graphics/MaterialG3d.h>
5#include <graphics/Model.h>
6#include <graphics/ShaderParamAnimation.h>
7#include <graphics/ShapeAnimation.h>
8#include <graphics/SkeletalAnimation.h>
9#include <graphics/TexturePatternAnimation.h>
10#include <graphics/VisibilityAnimation.h>
11
12#include <common/aglDisplayList.h>
13#include <common/aglShaderProgramArchive.h>
14#include <common/aglUniformBlock.h>
15#include <container/seadBuffer.h>
16#include <container/seadPtrArray.h>
17#include <container/seadSafeArray.h>
18#include <g3d/aglModelEx.h>
19#include <math/seadBoundBox.h>
20
21#include <nw/g3d/g3d_SkeletalAnimObj.h>
22#include <nw/g3d/g3d_ShapeObj.h>
23
24class CullViewFrustum;
25
26class ModelG3d : public Model // vtbl Address: 0x100BCF30
27{
28 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9F78
29 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101E9FA0
30 SEAD_RTTI_OVERRIDE(ModelG3d, Model)
31
32public:
44
46 {
47 void initialize(const agl::ShaderProgram* program)
48 {
49 shader_program = program;
50
51 env_location.setName("MdlEnvView");
52 mtx_location.setName("MdlMtx");
53 shp_location.setName("Shp");
54 mat_location.setName("Mat");
55 sdw_location.setName("cShadowMap");
56 rfl_location.setName("cReflectionMap");
57
59 }
60
62 {
63 if (shader_program)
64 {
65 env_location.search(*shader_program);
66 mtx_location.search(*shader_program);
67 shp_location.search(*shader_program);
68 mat_location.search(*shader_program);
69 sdw_location.search(*shader_program);
70 rfl_location.search(*shader_program);
71 }
72 }
73
81 };
82 static_assert(sizeof(ShaderAssign) == 0x64);
83
93 static_assert(sizeof(ShapeRenderInfo) == 0x30);
94
95 struct LightMap
96 {
97 void clear()
98 {
99 sead::MemUtil::fill(idx_lghtmap, u8(-1), sizeof(idx_lghtmap));
100 sead::MemUtil::fill(idx_sampler, u8(-1), sizeof(idx_sampler));
101 }
102
105 };
106 static_assert(sizeof(LightMap) == 0x10);
107
114 static_assert(sizeof(Shape) == 0x2C);
115
130 static_assert(sizeof(DrawInfo) == 0x28);
131
138 static_assert(cSamplerSlot_ReflectionMap == 14);
139
140private:
142 {
143 public:
145 {
147 }
148
149 void set(s32 index, bool enable)
150 {
151 if (index >= 32*10)
152 return;
153
154 if (enable)
155 mBuffer[index >> 5] |= 1 << (index & 0x1f);
156 else
157 mBuffer[index >> 5] &= ~(1 << (index & 0x1f));
158 }
159
160 bool get(s32 index) const
161 {
162 return mBuffer[index >> 5] & 1 << (index & 0x1f);
163 }
164
165 bool any() const
166 {
167 for (s32 i = 0; i < 10; i++)
168 if (mBuffer[i] != 0)
169 return true;
170
171 return false;
172 }
173
174 void setAll()
175 {
176 // ???
177 sead::MemUtil::fill(mBuffer.getBufferPtr(), u8(-1), sizeof(sead::BitFlag32) * 9);
178 // ??????
179 mBuffer[9] = u32(-1);
180 }
181
182 void resetAll()
183 {
184 sead::MemUtil::fillZero(mBuffer.getBufferPtr(), sizeof(mBuffer));
185 }
186
187 private:
189 };
190 static_assert(sizeof(BoundingFlagArray) == 0x28);
191
192public:
193 // Address: 0x024F301C
194 // Calculates the drawing resources for skeleton matrices, shapes and materials
196
197 // Address: 0x024F30DC
198 // Updates buffers for the GPU
199 void calcGPU(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override;
200
201 // (Does nothing)
202 void updateView(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override
203 {
204 }
205
206 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
207
208 // Notes:
209 // 1. Shadow-only shapes and reflection-only shapes are always invisible
210 // 2. Shadow casting for a shape is automatically enabled if "shadow_cast" is not present in its material's render info
211
212 // Address: 0x024F3884
213 void drawOpa(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override;
214 // Address: 0x024F398C
215 void drawXlu(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override;
216
217 // Address: 0x024F3A94
218 // This draws the shadow of shadow-casting shapes
219 void drawShadowOpa(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override;
220
221 // These draws the reflection on shapes
222 // Address: 0x024F3D64
223 void drawReflectionOpa(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override;
224 // Address: 0x024F3E6C
225 void drawReflectionXlu(s32 view_index, const sead::Matrix34f& view_mtx, const sead::Matrix44f& proj_mtx, RenderObjRenderMgr* render_mgr) override;
226
227 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
228
229 bool hasShadow() const override
230 {
231 return mShapeFlag.isOn(4);
232 }
233
234public:
235 // Address: 0x024F0800
237 // Address: 0x024F078C
238 virtual ~ModelG3d();
239
240 // Address: 0x024F4094
242 // Address: 0x024F4518
244
245 void setBaseModelMtx(const sead::Matrix34f& mtx) override
246 {
247 mBaseModelMtx = mtx;
248 mBoundingEnableFlag.set(1 << 1);
249 }
250
251 const sead::Matrix34f& getBaseModelMtx() const override
252 {
253 return mBaseModelMtx;
254 }
255
256 void setLocalScale(const sead::Vector3f& scale) override
257 {
258 mLocalScale = scale;
259 mBoundingEnableFlag.set(1 << 1);
260 }
261
262 const sead::Vector3f& getLocalScale() const override
263 {
264 return mLocalScale;
265 }
266
267 // Address: 0x024F3F74
268 // Determines if there are any shapes that can be drawn by draw*Opa()
269 bool hasOpa() const override;
270 // Address: 0x024F3FD0
271 // Determines if there are any shapes that can be drawn by draw*Xlu()
272 bool hasXlu() const override;
273
274 // Address: 0x024F476C
275 s32 searchBoneIndex(const sead::SafeString& name) const override;
276 // Address: 0x024F47D8
277 const char* getBoneName(s32 index) const override;
278 // Address: 0x024F4820
279 u32 getBoneNum() const override;
280
281 // Address: 0x024F4628
282 void setBoneLocalMatrix(s32 index, const sead::Matrix34f& rt, const sead::Vector3f& scale) override;
283 // Address: 0x024F46A4
284 void getBoneLocalMatrix(s32 index, sead::Matrix34f* rt = nullptr, sead::Vector3f* scale = nullptr) const override;
285
286 // Address: 0x024F4724
287 void setBoneWorldMatrix(s32 index, const sead::Matrix34f& mtx) override;
288 // Address: 0x024F4748
289 void getBoneWorldMatrix(s32 index, sead::Matrix34f* mtx) const override;
290
291 // Address: 0x024F4B3C
292 void setBoneVisible(s32 index, bool visible) override;
293 // Address: Deleted
294 bool isBoneVisible(s32 index) const override;
295
296 // Address: 0x024F4A54
297 u32 getMaterialNum() const override;
298 // Address: 0x024F4A5C
299 s32 searchMaterialIndex(const sead::SafeString& name) const override;
300 // Address: 0x024F4AC8
301 const char* getMaterialName(s32 index) const override;
302
303 Material* getMaterial(s32 index) const override
304 {
305 return mMaterial[index];
306 }
307
308 // Address: 0x024F4B0C
309 void setMaterialVisible(s32 index, bool visible) override;
310 // Address: Deleted
311 bool isMaterialVisible(s32 index) const override;
312
313 void setBoundingEnable(bool enable) override // deleted
314 {
315 mBoundingEnableFlag.change(1 << 0, enable);
316 }
317
319 {
320 return mBoundingEnableFlag.isOn(1 << 0);
321 }
322
323 const sead::Sphere3f& getBounding() const override
324 {
325 return mBounding;
326 }
327
328 // Address: 0x024F4B6C
329 void calcViewShapeShadowFlags(agl::sdw::DepthShadow* depth_shadow, RenderObjLayerBase* shadow_layer, RenderObjRenderMgr* render_mgr) override;
330
331 sead::SafeString getName() const override
332 {
333 return mModelEx.GetResource()->GetName();
334 }
335
336 void setSklAnimBlendWeight(s32 index, f32 weight) override
337 {
338 mSklAnimBlendWeight[index] = weight;
339 }
340
341 f32 getSklAnimBlendWeight(s32 index) const override // deleted
342 {
343 return mSklAnimBlendWeight[index];
344 }
345
346 // Address: 0x024F4830
347 void setSklAnim(s32 index, Animation* anim) override;
348 // Address: 0x024F489C
349 void setTexAnim(s32 index, Animation* anim) override;
350 // Address: 0x024F4910
351 void setShuAnim(s32 index, Animation* anim) override;
352 // Address: 0x024F497C
353 void setVisAnim(s32 index, Animation* anim) override;
354 // Address: 0x024F49E8
355 void setShaAnim(s32 index, Animation* anim) override;
356
357private:
358 Animation* const* getSklAnims() const override
359 {
360 return reinterpret_cast<Animation* const*>(mSklAnim.getBufferPtr());
361 }
362
363 Animation* const* getTexAnims() const override
364 {
365 return reinterpret_cast<Animation* const*>(mTexAnim.getBufferPtr());
366 }
367
368 Animation* const* getShuAnims() const override
369 {
370 return reinterpret_cast<Animation* const*>(mShuAnim.getBufferPtr());
371 }
372
373 Animation* const* getVisAnims() const override
374 {
375 return reinterpret_cast<Animation* const*>(mVisAnim.getBufferPtr());
376 }
377
378 Animation* const* getShaAnims() const override
379 {
380 return reinterpret_cast<Animation* const*>(mShaAnim.getBufferPtr());
381 }
382
383public:
385 {
386 return const_cast<SkeletalAnimation**>(reinterpret_cast<SkeletalAnimation* const*>(getSklAnims()));
387 }
388
390 {
391 return mSklAnim.size();
392 }
393
395 {
396 return const_cast<TexturePatternAnimation**>(reinterpret_cast<TexturePatternAnimation* const*>(getTexAnims()));
397 }
398
400 {
401 return mTexAnim.size();
402 }
403
405 {
406 return const_cast<ShaderParamAnimation**>(reinterpret_cast<ShaderParamAnimation* const*>(getShuAnims()));
407 }
408
410 {
411 return mShuAnim.size();
412 }
413
415 {
416 return const_cast<VisibilityAnimation**>(reinterpret_cast<VisibilityAnimation* const*>(getVisAnims()));
417 }
418
419
421 {
422 return mVisAnim.size();
423 }
424
426 {
427 return const_cast<ShapeAnimation**>(reinterpret_cast<ShapeAnimation* const*>(getShaAnims()));
428 }
429
431 {
432 return mShaAnim.size();
433 }
434
435public:
436 // Address: 0x024F1860
437 void initialize(nw::g3d::res::ResModel* res_model, const agl::ShaderProgramArchive* shader_archive, s32 num_view, s32 num_skl_anim, s32 num_tex_anim, s32 num_shu_anim, s32 num_vis_anim, s32 num_sha_anim, BoundingMode bounding_mode, sead::Heap* heap);
438
439 agl::g3d::ModelEx* getModelEx() { return &mModelEx; }
440 const agl::g3d::ModelEx* getModelEx() const { return &mModelEx; }
441
442 Shape& getShape(s32 index) { return mShape[index]; }
443 const Shape& getShape(s32 index) const { return mShape[index]; }
444
445 sead::BitFlag32& getRenderFlag() { return mRenderFlag; }
446 const sead::BitFlag32& getRenderFlag() const { return mRenderFlag; }
447
448 // Address: 0x024F0FE0
449 void activateMaterial(const agl::g3d::ModelShaderAssign& shader_assign, const nw::g3d::MaterialObj* material, const LightMap& light_map) const;
450
451 // Address: 0x024F50D8
453
454private:
455 // Address: 0x024F0B70
456 void createViewShapeShadowFlagBuffer_(s32 num_view, sead::Heap* heap);
457 // Address: 0x024F1098
458 void initializeShapeRenderInfo_(ShapeRenderInfo& render_info, const nw::g3d::MaterialObj* material, const nw::g3d::ShapeObj* shape);
459 // Address: 0x024F1850
461 // Address: 0x024F0C9C
463 // Address: 0x024F2CEC
464 void applyBlendWeight_(s32 shape_index);
465 // Address: 0x024F402C
466 static void setBoundingFlagArray_(BoundingFlagArray& flag_array, const SkeletalAnimation& anim);
467
468 // Address: 0x024F37B4
469 void drawOpa_(DrawInfo& draw_info, const RenderObjRenderMgr* render_mgr) const;
470 // Address: 0x024F381C
471 void drawXlu_(DrawInfo& draw_info, const RenderObjRenderMgr* render_mgr) const;
472
473 // Address: 0x024F30E8
474 void drawShape_(DrawInfo& draw_info, const ShapeRenderInfo& render_info, const RenderObjRenderMgr* render_mgr) const;
475
476private:
484 void* mBuffer;
502 sead::BitFlag32 mShapeFlag; // & 4: a shape has shadow cast, & 2: a shape has reflection, & 1: a shape is visible
507};
508static_assert(sizeof(ModelG3d) == 0x1AC);
Definition CullViewFrustum.h:16
Definition ModelG3d.h:142
bool get(s32 index) const
Definition ModelG3d.h:160
bool any() const
Definition ModelG3d.h:165
void setAll()
Definition ModelG3d.h:174
BoundingFlagArray()
Definition ModelG3d.h:144
sead::UnsafeArray< u32, 10 > mBuffer
Definition ModelG3d.h:188
void resetAll()
Definition ModelG3d.h:182
void set(s32 index, bool enable)
Definition ModelG3d.h:149
Definition ModelG3d.h:27
bool isBoundingEnable() const override
Definition ModelG3d.h:318
const sead::Vector3f & getLocalScale() const override
Definition ModelG3d.h:262
sead::Matrix34f mBaseModelMtx
Definition ModelG3d.h:494
u32 getVisAnimBufferSize() const
Definition ModelG3d.h:420
void createViewShapeShadowFlagBuffer_(s32 num_view, sead::Heap *heap)
void setSklAnim(s32 index, Animation *anim) override
void drawXlu_(DrawInfo &draw_info, const RenderObjRenderMgr *render_mgr) const
void drawReflectionXlu(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
void initializeShapeRenderInfo_(ShapeRenderInfo &render_info, const nw::g3d::MaterialObj *material, const nw::g3d::ShapeObj *shape)
void calcGPU(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
BoundingFlagArray mBoundingFlagArray
Definition ModelG3d.h:503
void setDisplayListDirty()
sead::BitFlag32 mRenderFlag
Definition ModelG3d.h:497
void setBaseModelMtx(const sead::Matrix34f &mtx) override
Definition ModelG3d.h:245
void drawShadowOpa(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
static s32 sortShapeRenderInfoCmp(const ShapeRenderInfo *a, const ShapeRenderInfo *b)
void setBoneVisible(s32 index, bool visible) override
void initialize(nw::g3d::res::ResModel *res_model, const agl::ShaderProgramArchive *shader_archive, s32 num_view, s32 num_skl_anim, s32 num_tex_anim, s32 num_shu_anim, s32 num_vis_anim, s32 num_sha_anim, BoundingMode bounding_mode, sead::Heap *heap)
sead::PtrArray< ShapeRenderInfo > mOpaShapeInfo
Definition ModelG3d.h:489
u32 getShuAnimBufferSize() const
Definition ModelG3d.h:409
ShaderParamAnimation ** getShuAnimBuffer()
Definition ModelG3d.h:404
void applyBlendWeight_(s32 shape_index)
void setTexAnim(s32 index, Animation *anim) override
bool isBoneVisible(s32 index) const override
sead::BitFlag32 mViewDepthShadowEnableFlag
Definition ModelG3d.h:505
sead::Buffer< SkeletalAnimation * > mSklAnim
Definition ModelG3d.h:479
const char * getMaterialName(s32 index) const override
const sead::Matrix34f & getBaseModelMtx() const override
Definition ModelG3d.h:251
Animation *const * getShuAnims() const override
Definition ModelG3d.h:368
sead::Sphere3f mBounding
Definition ModelG3d.h:500
void setMaterialVisible(s32 index, bool visible) override
sead::Buffer< MaterialG3d * > mMaterial
Definition ModelG3d.h:492
bool hasOpa() const override
SkeletalAnimation ** getSklAnimBuffer()
Definition ModelG3d.h:384
bool hasShadow() const override
Definition ModelG3d.h:229
nw::g3d::SkeletalAnimBlender mSklAnimBlender
Definition ModelG3d.h:478
bool mDisplayListDirty
Definition ModelG3d.h:506
s32 searchMaterialIndex(const sead::SafeString &name) const override
void setBoneWorldMatrix(s32 index, const sead::Matrix34f &mtx) override
VisibilityAnimation ** getVisAnimBuffer()
Definition ModelG3d.h:414
void drawXlu(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
const sead::BitFlag32 & getRenderFlag() const
Definition ModelG3d.h:446
SamplerSlot
Definition ModelG3d.h:133
@ cSamplerSlot_ReflectionMap
Definition ModelG3d.h:135
@ cSamplerSlot_LightMap_0
Definition ModelG3d.h:134
@ cSamplerSlot_ShadowMap
Definition ModelG3d.h:136
void setLocalScale(const sead::Vector3f &scale) override
Definition ModelG3d.h:256
const char * getBoneName(s32 index) const override
f32 getSklAnimBlendWeight(s32 index) const override
Definition ModelG3d.h:341
sead::BitFlag32 mShapeFlag
Definition ModelG3d.h:502
void calcViewShapeShadowFlags(agl::sdw::DepthShadow *depth_shadow, RenderObjLayerBase *shadow_layer, RenderObjRenderMgr *render_mgr) override
void * mSklAnimBlenderBuffer
Definition ModelG3d.h:487
sead::Buffer< VisibilityAnimation * > mVisAnim
Definition ModelG3d.h:482
void setSklAnimBlendWeight(s32 index, f32 weight) override
Definition ModelG3d.h:336
void drawShape_(DrawInfo &draw_info, const ShapeRenderInfo &render_info, const RenderObjRenderMgr *render_mgr) const
void calcBounding_()
u8 _128
Definition ModelG3d.h:496
virtual ~ModelG3d()
void drawReflectionOpa(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
sead::Buffer< TexturePatternAnimation * > mTexAnim
Definition ModelG3d.h:480
agl::g3d::ModelEx * getModelEx()
Definition ModelG3d.h:439
u32 getTexAnimBufferSize() const
Definition ModelG3d.h:399
void calc() override
void drawOpa(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
sead::Buffer< ShaderAssign > mShaderAssign
Definition ModelG3d.h:491
u32 getBoneNum() const override
bool hasXlu() const override
Shape & getShape(s32 index)
Definition ModelG3d.h:442
u32 getShaAnimBufferSize() const
Definition ModelG3d.h:430
sead::BitFlag32 mBoundingEnableFlag
Definition ModelG3d.h:498
sead::Buffer< ShaderParamAnimation * > mShuAnim
Definition ModelG3d.h:481
const sead::Sphere3f & getBounding() const override
Definition ModelG3d.h:323
void * mBuffer
Definition ModelG3d.h:484
static void setBoundingFlagArray_(BoundingFlagArray &flag_array, const SkeletalAnimation &anim)
agl::g3d::ModelEx mModelEx
Definition ModelG3d.h:477
void drawOpa_(DrawInfo &draw_info, const RenderObjRenderMgr *render_mgr) const
const Shape & getShape(s32 index) const
Definition ModelG3d.h:443
TexturePatternAnimation ** getTexAnimBuffer()
Definition ModelG3d.h:394
void setShaAnim(s32 index, Animation *anim) override
sead::Vector3f mLocalScale
Definition ModelG3d.h:495
Animation *const * getTexAnims() const override
Definition ModelG3d.h:363
void setBoneLocalMatrix(s32 index, const sead::Matrix34f &rt, const sead::Vector3f &scale) override
void calcMdl() override
bool isMaterialVisible(s32 index) const override
sead::SafeString getName() const override
Definition ModelG3d.h:331
u32 getSklAnimBufferSize() const
Definition ModelG3d.h:389
void getBoneWorldMatrix(s32 index, sead::Matrix34f *mtx) const override
void getBoneLocalMatrix(s32 index, sead::Matrix34f *rt=nullptr, sead::Vector3f *scale=nullptr) const override
Animation *const * getSklAnims() const override
Definition ModelG3d.h:358
sead::BitFlag32 & getRenderFlag()
Definition ModelG3d.h:445
Animation *const * getShaAnims() const override
Definition ModelG3d.h:378
s32 searchBoneIndex(const sead::SafeString &name) const override
const agl::g3d::ModelEx * getModelEx() const
Definition ModelG3d.h:440
sead::PtrArray< ShapeRenderInfo > mXluShapeInfo
Definition ModelG3d.h:490
Material * getMaterial(s32 index) const override
Definition ModelG3d.h:303
BoundingFlagArray mSubBoundingFlagArray
Definition ModelG3d.h:504
u32 getMaterialNum() const override
void updateView(s32 view_index, const sead::Matrix34f &view_mtx, const sead::Matrix44f &proj_mtx, RenderObjRenderMgr *render_mgr) override
Definition ModelG3d.h:202
void activateMaterial(const agl::g3d::ModelShaderAssign &shader_assign, const nw::g3d::MaterialObj *material, const LightMap &light_map) const
sead::BoundBox3f * mSubBounding
Definition ModelG3d.h:501
void setBoundingEnable(bool enable) override
Definition ModelG3d.h:313
void setShuAnim(s32 index, Animation *anim) override
sead::Buffer< f32 > mSklAnimBlendWeight
Definition ModelG3d.h:488
sead::Buffer< ShapeAnimation * > mShaAnim
Definition ModelG3d.h:483
void calcAnm() override
Animation *const * getVisAnims() const override
Definition ModelG3d.h:373
ShapeAnimation ** getShaAnimBuffer()
Definition ModelG3d.h:425
sead::Buffer< Shape > mShape
Definition ModelG3d.h:493
void * mBlockBuffer
Definition ModelG3d.h:485
size_t mBlockBufferSize
Definition ModelG3d.h:486
void setVisAnim(s32 index, Animation *anim) override
Definition ModelG3d.h:117
const agl::ShaderProgram * shader_program
Definition ModelG3d.h:121
ShaderAssign * shader_assign
Definition ModelG3d.h:122
agl::ShaderMode shader_mode
Definition ModelG3d.h:126
bool draw_shape
Definition ModelG3d.h:124
s32 polygon_offset
Definition ModelG3d.h:127
bool draw_reflection
Definition ModelG3d.h:125
const sead::Matrix44f * proj_mtx
Definition ModelG3d.h:120
const sead::Matrix34f * view_mtx
Definition ModelG3d.h:119
const CullViewFrustum * cull
Definition ModelG3d.h:128
s32 material_index
Definition ModelG3d.h:123
s32 view_index
Definition ModelG3d.h:118
Definition ModelG3d.h:96
s32 idx_lghtmap[LightMapMgr::cLightMapNum]
Definition ModelG3d.h:103
void clear()
Definition ModelG3d.h:97
s32 idx_sampler[LightMapMgr::cLightMapNum]
Definition ModelG3d.h:104
Definition ModelG3d.h:46
agl::UniformBlockLocation env_location
Definition ModelG3d.h:75
agl::UniformBlockLocation mtx_location
Definition ModelG3d.h:76
agl::SamplerLocation rfl_location
Definition ModelG3d.h:80
const agl::ShaderProgram * shader_program
Definition ModelG3d.h:74
void updateLocation()
Definition ModelG3d.h:61
agl::SamplerLocation sdw_location
Definition ModelG3d.h:79
agl::UniformBlockLocation shp_location
Definition ModelG3d.h:77
void initialize(const agl::ShaderProgram *program)
Definition ModelG3d.h:47
agl::UniformBlockLocation mat_location
Definition ModelG3d.h:78
Definition ModelG3d.h:85
s32 priority
Definition ModelG3d.h:87
agl::DisplayList attrib_dl
Definition ModelG3d.h:90
sead::BitFlag32 flag
Definition ModelG3d.h:88
s32 idx_shape
Definition ModelG3d.h:86
agl::DisplayList mat_dl
Definition ModelG3d.h:91
s32 polygon_offset
Definition ModelG3d.h:89
Definition ModelG3d.h:109
LightMap light_map
Definition ModelG3d.h:111
sead::Buffer< nw::g3d::fnd::GfxBuffer > vtx_buffer
Definition ModelG3d.h:112
agl::UniformBlock uniform_block
Definition ModelG3d.h:110