3#include <common/aglShaderLocation.h>
4#include <container/seadSafeArray.h>
5#include <heap/seadHeap.h>
7#include <nw/g3d/fnd/g3d_GfxObject.h>
8#include <nw/g3d/res/g3d_ResMaterial.h>
9#include <nw/g3d/res/g3d_ResShape.h>
10#include <nw/g3d/g3d_MaterialObj.h>
18namespace agl {
namespace g3d {
35 static_assert(
sizeof(
Attribute) == 0x10,
"agl::g3d::ModelShaderAttribute::Attribute size mismatch");
44 void bind(
const nw::g3d::res::ResMaterial* p_res_mat,
const nw::g3d::res::ResShape* p_res_shp,
const ShaderProgram* p_program,
bool use_res_assign,
bool use_shader_symbol_id);
51 void setVertexBuffer(
const nw::g3d::fnd::GfxBuffer* p_buffer, s32 index);
59static_assert(
sizeof(
ModelShaderAttribute) == 0x6C,
"agl::g3d::ModelShaderAttribute size mismatch");
80 void bind(
const nw::g3d::res::ResMaterial* p_res_mat,
const ShaderProgram* p_program,
bool use_res_assign,
bool use_shader_symbol_id);
81 void bindShaderResAssign(
const nw::g3d::res::ResMaterial* p_res_mat,
const nw::g3d::res::ResShape* p_res_shp,
const ShaderProgram* p_program,
const char* =
"Mat");
82 void bindShader(
const nw::g3d::res::ResMaterial* p_res_mat,
const nw::g3d::res::ResShape* p_res_shp,
const ShaderProgram* p_program,
const char* =
"Mat");
101static_assert(
sizeof(
ModelShaderAssign) == 0x1C4,
"agl::g3d::ModelShaderAssign size mismatch");
Definition aglShaderLocation.h:127
Definition aglShaderProgram.h:16
Definition aglModelShaderAssign.h:62
const SamplerLocation & getSamplerLocation(s32 index) const
Definition aglModelShaderAssign.h:70
void create(sead::Heap *heap)
Definition aglModelShaderAssign.cpp:157
void bindShader(const nw::g3d::res::ResMaterial *p_res_mat, const nw::g3d::res::ResShape *p_res_shp, const ShaderProgram *p_program, const char *="Mat")
Definition aglModelShaderAssign.cpp:225
void clear_()
Definition aglModelShaderAssign.cpp:162
u8 mSamplerNum
Definition aglModelShaderAssign.h:98
sead::UnsafeArray< SamplerLocation, 16 > mSamplerLocation
Definition aglModelShaderAssign.h:96
void activateTextureSampler(const nw::g3d::MaterialObj *p_material) const
Definition aglModelShaderAssign.cpp:269
const nw::g3d::res::ResSampler * getResSampler(s32 index) const
Definition aglModelShaderAssign.h:73
sead::UnsafeArray< const nw::g3d::res::ResSampler *, 16 > mResSampler
Definition aglModelShaderAssign.h:97
SamplerLocation & getSamplerLocation(s32 index)
Definition aglModelShaderAssign.h:69
const ShaderProgram * mpProgram
Definition aglModelShaderAssign.h:94
ModelShaderAttribute & getAttribute()
Definition aglModelShaderAssign.h:75
void bind(const nw::g3d::res::ResMaterial *p_res_mat, const ShaderProgram *p_program, bool use_res_assign, bool use_shader_symbol_id)
Definition aglModelShaderAssign.cpp:171
void bindShaderResAssign(const nw::g3d::res::ResMaterial *p_res_mat, const nw::g3d::res::ResShape *p_res_shp, const ShaderProgram *p_program, const char *="Mat")
Definition aglModelShaderAssign.cpp:210
const ModelShaderAttribute & getAttribute() const
Definition aglModelShaderAssign.h:76
void updateLocation_(const char *uniform_block_name)
Definition aglModelShaderAssign.cpp:238
const ShaderProgram * getShaderProgram() const
Definition aglModelShaderAssign.h:67
~ModelShaderAssign()
Definition aglModelShaderAssign.cpp:153
void activateMaterialUniformBlock(const nw::g3d::MaterialObj *p_material) const
Definition aglModelShaderAssign.cpp:254
s32 getSamplerNum() const
Definition aglModelShaderAssign.h:72
UniformBlockLocation mUniformBlockLocation
Definition aglModelShaderAssign.h:95
ModelShaderAttribute mAttribute
Definition aglModelShaderAssign.h:99
void pushBackSampler(const nw::g3d::res::ResSampler *p_res_sampler, const SamplerLocation &location)
Definition aglModelShaderAssign.cpp:244
ModelShaderAssign()
Definition aglModelShaderAssign.cpp:147
Definition aglModelShaderAssign.h:21
s32 getVertexBufferNum() const
Definition aglModelShaderAssign.h:46
void clear()
Definition aglModelShaderAssign.cpp:30
sead::UnsafeArray< const nw::g3d::fnd::GfxBuffer *, 16 > mVertexBuffer
Definition aglModelShaderAssign.h:56
void activateVertexBuffer() const
Definition aglModelShaderAssign.cpp:130
void create(sead::Heap *heap)
Definition aglModelShaderAssign.cpp:20
~ModelShaderAttribute()
Definition aglModelShaderAssign.cpp:14
void setVertexBuffer(const nw::g3d::fnd::GfxBuffer *p_buffer, s32 index)
Definition aglModelShaderAssign.cpp:138
u8 mVertexBufferNum
Definition aglModelShaderAssign.h:55
const nw::g3d::fnd::GfxBuffer * getVertexBuffer(s32 index) const
Definition aglModelShaderAssign.h:50
ModelShaderAttribute()
Definition aglModelShaderAssign.cpp:9
void bind(const nw::g3d::res::ResMaterial *p_res_mat, const nw::g3d::res::ResShape *p_res_shp, const ShaderProgram *p_program, bool use_res_assign, bool use_shader_symbol_id)
Definition aglModelShaderAssign.cpp:38
nw::g3d::fnd::GfxFetchShader mFetchShader
Definition aglModelShaderAssign.h:57
u8 _0
Definition aglModelShaderAssign.h:54
Definition seadSafeArray.h:257
Definition aglModelEx.cpp:4
Definition aglDisplayList.cpp:5
Definition seadAssert.h:44
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
Definition aglModelShaderAssign.h:23
s32 mIndex
Definition aglModelShaderAssign.h:31
sead::SafeString mName
Definition aglModelShaderAssign.h:32
s16 mLocation
Definition aglModelShaderAssign.h:33
Attribute()
Definition aglModelShaderAssign.h:24