New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
RenderObjRenderMgr.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/ModelEnvView.h>
4
5#include <common/aglTextureSampler.h>
6#include <container/seadBuffer.h>
7#include <container/seadListImpl.h>
8#include <container/seadPtrArray.h>
9#include <environment/aglEnvObjMgr.h>
10#include <gfx/seadCamera.h>
11#include <gfx/seadProjection.h>
12#include <heap/seadDisposer.h>
13#include <layer/aglRenderInfo.h>
14#include <math/seadMatrix.h>
15#include <prim/seadNamable.h>
16#include <shadow/aglDepthShadow.h>
17
18class CullViewFrustum;
19class RenderObj;
21
22// vtbl Address: 0x100BDBA4
24{
25public:
26 struct ViewInfo
27 {
33 void* _7c; // pointer to struct of two f32 and one sead::Color4f for fog color
34 };
35 static_assert(sizeof(ViewInfo) == 0x80);
36
38 {
39 public:
40 virtual void preDrawOpa(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo& render_info) = 0; ///< Opa Render Pass Start
41 virtual void preDrawXlu(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo& render_info) = 0; ///< Xlu Render Pass Start
42 virtual void postDrawOpa(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo& render_info) = 0; ///< Opa Render Pass End
43 virtual void postDrawXlu(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo& render_info) = 0; ///< Xlu Render Pass End
44 };
45
46public:
47 // Address: 0x024FAF58
48 RenderObjRenderMgr(const sead::SafeString& name);
49 // Address: 0x024FB0AC
51
52 // Address: 0x024FB128
53 void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_render_pass_max_num, s32 xlu_render_pass_max_num, sead::Heap* heap);
54 // Address: 0x024FB964
55 void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_render_pass_obj_buffer_alloc_num, s32 opa_render_pass_max_num, s32 xlu_render_pass_max_num, sead::Heap* heap);
56
57 // Address: 0x024FBEAC
58 bool isFull() const;
59
60 // Address: 0x024FBEC8
62
63 // Address: 0x024FBED0
64 void clear();
65
66 // Address: 0x024FBF6C
67 void calcView(s32 view_index, const sead::Camera& camera, const sead::Projection& projection, const sead::Matrix44f* depth_shadow_mtx, const CullViewFrustum* cull, void* param_6);
68 // Address: 0x024FC090
69 void calcGPU(s32 view_index);
70 // Address: 0x024FC158
71 void drawOpa(s32 view_index, const agl::lyr::RenderInfo& render_info);
72 // Address: 0x024FC2A4
73 void drawXlu(s32 view_index, const agl::lyr::RenderInfo& render_info);
74 // Address: 0x024FC3F0
75 void drawShadowOpa(s32 view_index, const agl::lyr::RenderInfo& render_info);
76 // Address: 0x024FC48C
77 void drawReflectionOpa(s32 view_index, const agl::lyr::RenderInfo& render_info);
78 // Address: 0x024FC53C
79 void drawReflectionXlu(s32 view_index, const agl::lyr::RenderInfo& render_info);
80
81 // Address: 0x024FC5EC
82 void pushBackRenderObj(RenderObj* obj, s32 opa_render_pass, s32 xlu_render_pass);
83 // Address: 0x024FC71C
84 void pushBackRenderObj(RenderObj* obj, s32 opa_render_pass, s32 xlu_render_pass, const sead::Vector3f& order_pos);
85
86 // Address: 0x024FC738
88
89 // Address: 0x024FC798
90 void loadEnvRes(const void* file);
91
92 // Address: 0x024FC7EC
93 void calcViewShapeShadowFlags(agl::sdw::DepthShadow* depth_shadow, RenderObjLayerBase* shadow_layer);
94
95 ModelEnvView& getModelEnvView() { return mModelEnvView; }
96 const ModelEnvView& getModelEnvView() const { return mModelEnvView; }
97
99 void setDrawCallback(CallbackBase* callback) { mCallback = callback; }
100
101 agl::TextureSampler* getShadowMap() const { return mShadowMap; }
102 agl::TextureSampler* getReflectionMap() const { return mReflectionMap; }
103
104 void setShadowMap(agl::TextureSampler* sampler) { mShadowMap = sampler; }
105 void setReflectionMap(agl::TextureSampler* sampler) { mReflectionMap = sampler; }
106
107 agl::env::EnvObjMgr& getEnvObjMgr() { return mEnvObjMgr; }
108 const agl::env::EnvObjMgr& getEnvObjMgr() const { return mEnvObjMgr; }
109
110 ViewInfo& getViewInfo(s32 view_index) { return mViewInfo[view_index]; }
111 const ViewInfo& getViewInfo(s32 view_index) const { return mViewInfo[view_index]; }
112
113private:
114 // Address: 0x024FC084
116
117 // Address: 0x024FBF3C
118 static int compare_(const RenderObj* a, const RenderObj* b);
119
120private:
121 bool _18;
129 bool mDrawShadow; // I think
133 sead::ListNode mListNode; // For sead::OffsetList in LayerMgr
134};
135static_assert(sizeof(RenderObjRenderMgr) == 0x4D4);
Definition CullViewFrustum.h:16
Definition RenderObjLayer.h:9
Definition RenderObjRenderMgr.h:38
virtual void postDrawOpa(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo &render_info)=0
Opa Render Pass End.
virtual void preDrawXlu(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo &render_info)=0
Xlu Render Pass Start.
virtual void preDrawOpa(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo &render_info)=0
Opa Render Pass Start.
virtual void postDrawXlu(s32 view_index, s32 render_pass, const agl::lyr::RenderInfo &render_info)=0
Xlu Render Pass End.
Definition RenderObjRenderMgr.h:24
void drawOpa(s32 view_index, const agl::lyr::RenderInfo &render_info)
void setDrawCallback(CallbackBase *callback)
Definition RenderObjRenderMgr.h:99
virtual ~RenderObjRenderMgr()
const ModelEnvView & getModelEnvView() const
Definition RenderObjRenderMgr.h:96
void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_render_pass_obj_buffer_alloc_num, s32 opa_render_pass_max_num, s32 xlu_render_pass_max_num, sead::Heap *heap)
static int compare_(const RenderObj *a, const RenderObj *b)
ViewInfo & getViewInfo(s32 view_index)
Definition RenderObjRenderMgr.h:110
void calcViewShapeShadowFlags(agl::sdw::DepthShadow *depth_shadow, RenderObjLayerBase *shadow_layer)
void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_render_pass_max_num, s32 xlu_render_pass_max_num, sead::Heap *heap)
void drawReflectionXlu(s32 view_index, const agl::lyr::RenderInfo &render_info)
void calcGPU(s32 view_index)
void drawReflectionOpa(s32 view_index, const agl::lyr::RenderInfo &render_info)
agl::env::EnvObjMgr & getEnvObjMgr()
Definition RenderObjRenderMgr.h:107
const ViewInfo & getViewInfo(s32 view_index) const
Definition RenderObjRenderMgr.h:111
bool mDrawShadow
Definition RenderObjRenderMgr.h:129
bool isFull() const
const agl::env::EnvObjMgr & getEnvObjMgr() const
Definition RenderObjRenderMgr.h:108
CallbackBase * mCallback
Definition RenderObjRenderMgr.h:128
sead::Buffer< ViewInfo > mViewInfo
Definition RenderObjRenderMgr.h:132
sead::PtrArray< RenderObj > mRenderObj
Definition RenderObjRenderMgr.h:122
void pushBackRenderObj(RenderObj *obj, s32 opa_render_pass, s32 xlu_render_pass)
void drawXlu(s32 view_index, const agl::lyr::RenderInfo &render_info)
void pushBackRenderObj(RenderObj *obj, s32 opa_render_pass, s32 xlu_render_pass, const sead::Vector3f &order_pos)
sead::PtrArray< RenderObj > mRenderObjShadow
Definition RenderObjRenderMgr.h:125
agl::TextureSampler * mShadowMap
Definition RenderObjRenderMgr.h:130
void loadEnvRes(const void *file)
agl::TextureSampler * mReflectionMap
Definition RenderObjRenderMgr.h:131
agl::env::EnvObjMgr mEnvObjMgr
Definition RenderObjRenderMgr.h:126
agl::TextureSampler * getReflectionMap() const
Definition RenderObjRenderMgr.h:102
CallbackBase * getDrawCallback() const
Definition RenderObjRenderMgr.h:98
agl::TextureSampler * getShadowMap() const
Definition RenderObjRenderMgr.h:101
bool _18
Definition RenderObjRenderMgr.h:121
RenderObjRenderMgr(const sead::SafeString &name)
s32 createView(RenderObjLayerBase *layer)
void setShadowMap(agl::TextureSampler *sampler)
Definition RenderObjRenderMgr.h:104
void drawShadowOpa(s32 view_index, const agl::lyr::RenderInfo &render_info)
ModelEnvView mModelEnvView
Definition RenderObjRenderMgr.h:127
void calcView(s32 view_index, const sead::Camera &camera, const sead::Projection &projection, const sead::Matrix44f *depth_shadow_mtx, const CullViewFrustum *cull, void *param_6)
void setReflectionMap(agl::TextureSampler *sampler)
Definition RenderObjRenderMgr.h:105
sead::ListNode mListNode
Definition RenderObjRenderMgr.h:133
ModelEnvView & getModelEnvView()
Definition RenderObjRenderMgr.h:95
Definition RenderObj.h:25
Definition RenderObjRenderMgr.h:27
sead::Matrix34f view_mtx
Definition RenderObjRenderMgr.h:29
sead::Matrix44f proj_mtx
Definition RenderObjRenderMgr.h:30
const sead::Matrix44f * depth_shadow_mtx
Definition RenderObjRenderMgr.h:31
RenderObjLayerBase * layer
Definition RenderObjRenderMgr.h:28
const CullViewFrustum * cull
Definition RenderObjRenderMgr.h:32
void * _7c
Definition RenderObjRenderMgr.h:33