sead
Loading...
Searching...
No Matches
agl::ShaderProgram Class Reference

#include <aglShaderProgram.h>

Classes

class  SharedData
class  VariationBuffer

Public Member Functions

 ShaderProgram ()
virtual ~ShaderProgram ()
s32 getVariationID () const
DisplayListgetDisplayList ()
const DisplayListgetDisplayList () const
const sead::SafeStringgetName () const
const ResShaderSymbolArraygetResShaderSymbolArray (ShaderSymbolType type) const
void setResShaderSymbolArray (ShaderSymbolType type, const ResShaderSymbolArray &array)
void setResShaderVariationDefaultArray (const ResShaderVariationArray &array)
void initialize (const sead::SafeString &name, sead::Heap *heap)
void createVariationBuffer (s32 macro_num, sead::Heap *heap)
void createVariationMacro (s32 index, const sead::SafeString &name, const sead::SafeString &id, s32 value_num, sead::Heap *heap)
void setVariationMacroValue (s32 macro_index, s32 value_index, const sead::SafeString &value)
void createVariation (sead::Heap *heap)
ShaderMode activate (ShaderMode current_mode=cShaderMode_Invalid, bool use_dl=true) const
ShadergetShader (ShaderType type)
const ShadergetShader (ShaderType type) const
GX2VertexShader * getVertexShaderBinary ()
const GX2VertexShader * getVertexShaderBinary () const
GX2PixelShader * getFragmentShaderBinary ()
const GX2PixelShader * getFragmentShaderBinary () const
GX2GeometryShader * getGeometryShaderBinary ()
const GX2GeometryShader * getGeometryShaderBinary () const
void createAttribute (s32 num, sead::Heap *heap=nullptr)
void setAttributeName (s32 index, const sead::SafeString &name)
void createUniform (s32 num, sead::Heap *heap=nullptr)
void setUniformName (s32 index, const sead::SafeString &name)
void createUniformBlock (s32 num, sead::Heap *heap=nullptr)
void setUniformBlockName (s32 index, const sead::SafeString &name)
void createSamplerLocation (s32 num, sead::Heap *heap=nullptr)
void setSamplerLocationName (s32 index, const sead::SafeString &name)
u32 setUpAllVariation ()
void reserveSetUpAllVariation ()
s32 getVariationNum () const
s32 getVariationMacroNum () const
s32 searchVariationShaderProgramIndex (s32 macro_num, const char *const *macro_array, const char *const *value_array) const
ShaderProgramgetVariation (s32 index)
const ShaderProgramgetVariation (s32 index) const
const ShaderProgramsearchVariationShaderProgram (s32 macro_num, const char *const *macro_array, const char *const *value_array) const
const sead::SafeStringsearchVariationMacroName (const sead::SafeString &id) const
s32 getVariationMacroValueVariationNum (s32 macro_index) const
u32 updateVariation (s32 index)
const AttributeLocationgetAttributeLocation (s32 index) const
const UniformLocationgetUniformLocation (s32 index) const
const UniformBlockLocationgetUniformBlockLocation (s32 index) const
const SamplerLocationgetSamplerLocation (s32 index) const
const AttributeLocationgetAttributeLocationValidate (s32 index) const
const UniformLocationgetUniformLocationValidate (s32 index) const
const UniformBlockLocationgetUniformBlockLocationValidate (s32 index) const
const SamplerLocationgetSamplerLocationValidate (s32 index) const
void updateAttributeLocation () const
void updateUniformLocation () const
void updateUniformBlockLocation () const
void updateSamplerLocation () const
void dump () const
void cleanUp ()
void destroyAttribute ()
void destroyUniform ()
void destroyUniformBlock ()
void destroySamplerLocation ()

Static Public Member Functions

static void changeShaderMode (ShaderMode mode)

Static Public Attributes

static const s32 cVariationMacroMax = 1024
static const s32 cVariationValueMax = 1024

Private Member Functions

u32 validate_ () const
u32 forceValidate_ () const
void setUpForVariation_ () const
void setShaderGX2_ () const
VariationBuffergetVariation_ ()
const VariationBuffergetVariation_ () const

Private Attributes

sead::BitFlag8 mFlag
u16 mVariationID
DisplayList mDisplayList
sead::Buffer< AttributeLocationmAttributeLocation
sead::Buffer< UniformLocationmUniformLocation
sead::Buffer< UniformBlockLocationmUniformBlockLocation
sead::Buffer< SamplerLocationmSamplerLocation
VertexShader mVertexShader
FragmentShader mFragmentShader
GeometryShader mGeometryShader
SharedDatampSharedData

Constructor & Destructor Documentation

◆ ShaderProgram()

agl::ShaderProgram::ShaderProgram ( )

◆ ~ShaderProgram()

agl::ShaderProgram::~ShaderProgram ( )
virtual

Member Function Documentation

◆ changeShaderMode()

void agl::ShaderProgram::changeShaderMode ( ShaderMode mode)
static

◆ getVariationID()

s32 agl::ShaderProgram::getVariationID ( ) const
inline

◆ getDisplayList() [1/2]

DisplayList & agl::ShaderProgram::getDisplayList ( )
inline

◆ getDisplayList() [2/2]

const DisplayList & agl::ShaderProgram::getDisplayList ( ) const
inline

◆ getName()

const sead::SafeString & agl::ShaderProgram::getName ( ) const
inline

◆ getResShaderSymbolArray()

const ResShaderSymbolArray & agl::ShaderProgram::getResShaderSymbolArray ( ShaderSymbolType type) const
inline

◆ setResShaderSymbolArray()

void agl::ShaderProgram::setResShaderSymbolArray ( ShaderSymbolType type,
const ResShaderSymbolArray & array )
inline

◆ setResShaderVariationDefaultArray()

void agl::ShaderProgram::setResShaderVariationDefaultArray ( const ResShaderVariationArray & array)
inline

◆ initialize()

void agl::ShaderProgram::initialize ( const sead::SafeString & name,
sead::Heap * heap )

◆ createVariationBuffer()

void agl::ShaderProgram::createVariationBuffer ( s32 macro_num,
sead::Heap * heap )

◆ createVariationMacro()

void agl::ShaderProgram::createVariationMacro ( s32 index,
const sead::SafeString & name,
const sead::SafeString & id,
s32 value_num,
sead::Heap * heap )

◆ setVariationMacroValue()

void agl::ShaderProgram::setVariationMacroValue ( s32 macro_index,
s32 value_index,
const sead::SafeString & value )

◆ createVariation()

void agl::ShaderProgram::createVariation ( sead::Heap * heap)

◆ activate()

ShaderMode agl::ShaderProgram::activate ( ShaderMode current_mode = cShaderMode_Invalid,
bool use_dl = true ) const

◆ getShader() [1/2]

Shader * agl::ShaderProgram::getShader ( ShaderType type)

◆ getShader() [2/2]

const Shader * agl::ShaderProgram::getShader ( ShaderType type) const

◆ getVertexShaderBinary() [1/2]

GX2VertexShader * agl::ShaderProgram::getVertexShaderBinary ( )
inline

◆ getVertexShaderBinary() [2/2]

const GX2VertexShader * agl::ShaderProgram::getVertexShaderBinary ( ) const
inline

◆ getFragmentShaderBinary() [1/2]

GX2PixelShader * agl::ShaderProgram::getFragmentShaderBinary ( )
inline

◆ getFragmentShaderBinary() [2/2]

const GX2PixelShader * agl::ShaderProgram::getFragmentShaderBinary ( ) const
inline

◆ getGeometryShaderBinary() [1/2]

GX2GeometryShader * agl::ShaderProgram::getGeometryShaderBinary ( )
inline

◆ getGeometryShaderBinary() [2/2]

const GX2GeometryShader * agl::ShaderProgram::getGeometryShaderBinary ( ) const
inline

◆ createAttribute()

void agl::ShaderProgram::createAttribute ( s32 num,
sead::Heap * heap = nullptr )

◆ setAttributeName()

void agl::ShaderProgram::setAttributeName ( s32 index,
const sead::SafeString & name )

◆ createUniform()

void agl::ShaderProgram::createUniform ( s32 num,
sead::Heap * heap = nullptr )

◆ setUniformName()

void agl::ShaderProgram::setUniformName ( s32 index,
const sead::SafeString & name )

◆ createUniformBlock()

void agl::ShaderProgram::createUniformBlock ( s32 num,
sead::Heap * heap = nullptr )

◆ setUniformBlockName()

void agl::ShaderProgram::setUniformBlockName ( s32 index,
const sead::SafeString & name )

◆ createSamplerLocation()

void agl::ShaderProgram::createSamplerLocation ( s32 num,
sead::Heap * heap = nullptr )

◆ setSamplerLocationName()

void agl::ShaderProgram::setSamplerLocationName ( s32 index,
const sead::SafeString & name )

◆ setUpAllVariation()

u32 agl::ShaderProgram::setUpAllVariation ( )

◆ reserveSetUpAllVariation()

void agl::ShaderProgram::reserveSetUpAllVariation ( )

◆ getVariationNum()

s32 agl::ShaderProgram::getVariationNum ( ) const

◆ getVariationMacroNum()

s32 agl::ShaderProgram::getVariationMacroNum ( ) const

◆ searchVariationShaderProgramIndex()

s32 agl::ShaderProgram::searchVariationShaderProgramIndex ( s32 macro_num,
const char *const * macro_array,
const char *const * value_array ) const

◆ getVariation() [1/2]

ShaderProgram * agl::ShaderProgram::getVariation ( s32 index)

◆ getVariation() [2/2]

const ShaderProgram * agl::ShaderProgram::getVariation ( s32 index) const

◆ searchVariationShaderProgram()

const ShaderProgram * agl::ShaderProgram::searchVariationShaderProgram ( s32 macro_num,
const char *const * macro_array,
const char *const * value_array ) const
inline

◆ searchVariationMacroName()

const sead::SafeString & agl::ShaderProgram::searchVariationMacroName ( const sead::SafeString & id) const

◆ getVariationMacroValueVariationNum()

s32 agl::ShaderProgram::getVariationMacroValueVariationNum ( s32 macro_index) const

◆ updateVariation()

u32 agl::ShaderProgram::updateVariation ( s32 index)
inline

◆ getAttributeLocation()

const AttributeLocation & agl::ShaderProgram::getAttributeLocation ( s32 index) const
inline

◆ getUniformLocation()

const UniformLocation & agl::ShaderProgram::getUniformLocation ( s32 index) const
inline

◆ getUniformBlockLocation()

const UniformBlockLocation & agl::ShaderProgram::getUniformBlockLocation ( s32 index) const
inline

◆ getSamplerLocation()

const SamplerLocation & agl::ShaderProgram::getSamplerLocation ( s32 index) const
inline

◆ getAttributeLocationValidate()

const AttributeLocation & agl::ShaderProgram::getAttributeLocationValidate ( s32 index) const
inline

◆ getUniformLocationValidate()

const UniformLocation & agl::ShaderProgram::getUniformLocationValidate ( s32 index) const
inline

◆ getUniformBlockLocationValidate()

const UniformBlockLocation & agl::ShaderProgram::getUniformBlockLocationValidate ( s32 index) const
inline

◆ getSamplerLocationValidate()

const SamplerLocation & agl::ShaderProgram::getSamplerLocationValidate ( s32 index) const
inline

◆ updateAttributeLocation()

void agl::ShaderProgram::updateAttributeLocation ( ) const

◆ updateUniformLocation()

void agl::ShaderProgram::updateUniformLocation ( ) const

◆ updateUniformBlockLocation()

void agl::ShaderProgram::updateUniformBlockLocation ( ) const

◆ updateSamplerLocation()

void agl::ShaderProgram::updateSamplerLocation ( ) const

◆ dump()

void agl::ShaderProgram::dump ( ) const

◆ cleanUp()

void agl::ShaderProgram::cleanUp ( )

◆ destroyAttribute()

void agl::ShaderProgram::destroyAttribute ( )

◆ destroyUniform()

void agl::ShaderProgram::destroyUniform ( )

◆ destroyUniformBlock()

void agl::ShaderProgram::destroyUniformBlock ( )

◆ destroySamplerLocation()

void agl::ShaderProgram::destroySamplerLocation ( )

◆ validate_()

u32 agl::ShaderProgram::validate_ ( ) const
private

◆ forceValidate_()

u32 agl::ShaderProgram::forceValidate_ ( ) const
private

◆ setUpForVariation_()

void agl::ShaderProgram::setUpForVariation_ ( ) const
private

◆ setShaderGX2_()

void agl::ShaderProgram::setShaderGX2_ ( ) const
private

◆ getVariation_() [1/2]

VariationBuffer * agl::ShaderProgram::getVariation_ ( )
inlineprivate

◆ getVariation_() [2/2]

const VariationBuffer * agl::ShaderProgram::getVariation_ ( ) const
inlineprivate

Member Data Documentation

◆ cVariationMacroMax

const s32 agl::ShaderProgram::cVariationMacroMax = 1024
static

◆ cVariationValueMax

const s32 agl::ShaderProgram::cVariationValueMax = 1024
static

◆ mFlag

sead::BitFlag8 agl::ShaderProgram::mFlag
mutableprivate

◆ mVariationID

u16 agl::ShaderProgram::mVariationID
private

◆ mDisplayList

DisplayList agl::ShaderProgram::mDisplayList
mutableprivate

◆ mAttributeLocation

sead::Buffer<AttributeLocation> agl::ShaderProgram::mAttributeLocation
mutableprivate

◆ mUniformLocation

sead::Buffer<UniformLocation> agl::ShaderProgram::mUniformLocation
mutableprivate

◆ mUniformBlockLocation

sead::Buffer<UniformBlockLocation> agl::ShaderProgram::mUniformBlockLocation
mutableprivate

◆ mSamplerLocation

sead::Buffer<SamplerLocation> agl::ShaderProgram::mSamplerLocation
mutableprivate

◆ mVertexShader

VertexShader agl::ShaderProgram::mVertexShader
private

◆ mFragmentShader

FragmentShader agl::ShaderProgram::mFragmentShader
private

◆ mGeometryShader

GeometryShader agl::ShaderProgram::mGeometryShader
private

◆ mpSharedData

SharedData* agl::ShaderProgram::mpSharedData
private