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