4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/cafe/eft_CafeWrapper.h>
6#include <nw/eft/eft_UniformBlock.h>
8namespace nw {
namespace eft {
91 mUserShaderSetting = res->userShaderSetting;
92 mUserShaderFlag = res->userShaderFlag;
93 mUserShaderSwitchFlag = res->userShaderSwitchFlag;
111 const StripeData* stripeRes =
reinterpret_cast<
const StripeData*>((u32)res + res->stripeDataOffset);
134 mUserShaderSetting = res->childUserShaderSetting;
135 mUserShaderFlag = res->childUserShaderFlag;
136 mUserShaderSwitchFlag = res->childUserShaderSwitchFlag;
149 if (mVertexBillboardTypeVariation == key->mVertexBillboardTypeVariation &&
150 mVertexRotationVariation == key->mVertexRotationVariation &&
151 mUserShaderSetting == key->mUserShaderSetting &&
152 mUserShaderFlag == key->mUserShaderFlag &&
153 mUserShaderSwitchFlag == key->mUserShaderSwitchFlag &&
154 mStripeTypeVariation == key->mStripeTypeVariation &&
155 mStripeEmitterCoord == key->mStripeEmitterCoord &&
156 mUsePrimitive == key->mUsePrimitive &&
157 strcmp(mUserShaderCompileDef, key->mUserShaderCompileDef) == 0)
165 bool GetCompileSetting(
char* compileSetting, u32 compileSettingBufferSize,
bool targetCafe);
167static_assert(
sizeof(
VertexShaderKey) == 0x20,
"nw::eft::VertexShaderKey size mismatch");
213 if (mShaderVariation == key->mShaderVariation &&
214 mUseSoftEdge == key->mUseSoftEdge &&
215 mTextureVariation == key->mTextureVariation &&
216 mColorVariation == key->mColorVariation &&
217 mAlphaVariation == key->mAlphaVariation &&
218 mUserShaderSetting == key->mUserShaderSetting &&
219 mUsePrimitive == key->mUsePrimitive &&
220 mTexture1ColorComposite == key->mTexture1ColorComposite &&
221 mTexture1AlphaComposite == key->mTexture1AlphaComposite &&
222 mPrimitiveColorComposite == key->mPrimitiveColorComposite &&
223 mPrimitiveAlphaComposite == key->mPrimitiveAlphaComposite &&
224 mTexture0ColorOpt == key->mTexture0ColorOpt &&
225 mTexture1ColorOpt == key->mTexture1ColorOpt &&
226 mPrimitiveColorOpt == key->mPrimitiveColorOpt &&
227 mTexture0AlphaOpt == key->mTexture0AlphaOpt &&
228 mTexture1AlphaOpt == key->mTexture1AlphaOpt &&
229 mPrimitiveAlphaOpt == key->mPrimitiveAlphaOpt &&
230 mApplyAlpha == key->mApplyAlpha &&
231 mUserShaderFlag == key->mUserShaderFlag &&
232 mUserShaderSwitchFlag == key->mUserShaderSwitchFlag &&
233 strcmp(mUserShaderCompileDef, key->mUserShaderCompileDef) == 0)
243 mUseSoftEdge = res->shaderUseSoftEdge;
249 mUserShaderSetting = res->userShaderSetting;
250 mUserShaderFlag = res->userShaderFlag;
251 mUserShaderSwitchFlag = res->userShaderSwitchFlag;
252 mApplyAlpha = res->shaderApplyAlphaToRefract;
308 mUseSoftEdge = res->childShaderUseSoftEdge;
312 mUserShaderSetting = res->childUserShaderSetting;
313 mUserShaderFlag = res->childUserShaderFlag;
314 mUserShaderSwitchFlag = res->childUserShaderSwitchFlag;
315 mApplyAlpha = res->childShaderApplyAlphaToRefract;
356 bool GetCompileSetting(
char* compileSetting, u32 compileSettingBufferSize,
bool targetCafe);
358static_assert(
sizeof(
FragmentShaderKey) == 0x30,
"nw::eft::FragmentShaderKey size mismatch");
365static_assert(
sizeof(
GeometryShaderKey) == 4,
"nw::eft::GeometryShaderKey size mismatch");
386 static_assert(
sizeof(
sourceCodeTable) == 8,
"nw::eft::ShaderSrcInformation::sourceCodeTable size mismatch");
397static_assert(
sizeof(
ShaderSrcInformation) == 0x48,
"nw::eft::ShaderSrcInformation size mismatch");
407static_assert(
sizeof(
ShaderInformation) == 0x5C,
"nw::eft::ShaderInformation size mismatch");
458 mVertexShaderKey = *key;
463 mFragmentShaderKey = *key;
468 mGeometryShaderKey = *key;
473 return mVertexShaderKey;
478 return mFragmentShaderKey;
483 return mGeometryShaderKey;
488 return mVertexShaderKey.IsStripe();
493 return mFragmentShaderKey.mShaderVariation;
498 return mFragmentShaderKey.IsUseSoftEdge();
503 return mFragmentShaderKey.mTextureVariation;
508 return mFragmentShaderKey.mColorVariation;
513 return mFragmentShaderKey.mAlphaVariation;
524 mShader.SetupShader(heap);
529 return mShader.IsInitialized();
544 mVertexViewUniformBlock.BindUniformBlock(block);
545 mFragmentViewUniformBlock.BindUniformBlock(block);
550 mVertexEmitterStaticUniformBlock.BindUniformBlock(block);
551 mFragmentEmitterStaticUniformBlock.BindUniformBlock(block);
556 mVertexEmitterDynamicUniformBlock.BindUniformBlock(block);
579 return mFragmentTextureSampler[slot];
584 return mFragmentTextureSampler[EFT_TEXTURE_SLOT_FRAME_BUFFER];
589 return mFragmentTextureSampler[EFT_TEXTURE_SLOT_DEPTH_BUFFER];
643static_assert(
sizeof(
ParticleShader) == 0x61C,
"nw::eft::ParticleShader size mismatch");
s32 GetOuterAttribute() const
s32 GetSubTexAnimAttribute() const
void EnableInstanced()
Definition eft_Shader.cpp:156
VertexTextureLocation mUserVertexSamplerLocation[USER_SAMPLER_SLOT_MAX]
Definition eft_Shader.h:640
s32 mSubTexAnimAttr
Definition eft_Shader.h:620
const FragmentShaderKey & GetFragmentShaderKey() const
void InitializeFragmentShaderLocation()
Definition eft_Shader.cpp:54
UniformBlock mStripeUniformBlock
Definition eft_Shader.h:636
UniformBlock mVertexEmitterDynamicUniformBlock
Definition eft_Shader.h:633
UniformBlock mFragmentEmitterStaticUniformBlock
Definition eft_Shader.h:635
s32 GetNormalAttribute() const
s32 mIndexAttr
Definition eft_Shader.h:612
FragmentCombinerTypeVariation GetCombinerTyperVariation() const
UniformBlock mVertexEmitterStaticUniformBlock
Definition eft_Shader.h:632
s32 mColor0Attr
Definition eft_Shader.h:623
s32 GetPositionAttribute() const
s32 vRotAttr
Definition eft_Shader.h:625
s32 mDirAttr
Definition eft_Shader.h:614
void Bind()
Definition eft_Shader.cpp:135
FragmentAlphaVariation GetAlphaVariation() const
bool SetUserVertexUniformBlock(UserUniformBlockID uniformBlockID, const char *name, void *param)
Definition eft_Shader.cpp:140
s32 GetTextureCoordAttribute() const
FragmentTextureLocation GetDepthTextureSamplerLocation() const
GeometryShaderKey mGeometryShaderKey
Definition eft_Shader.h:606
bool IsInitialized() const
const GeometryShaderKey & GetGeometryShaderKey() const
bool IsFragmentSoftEdgeVariation() const
UniformBlock mUserVertexUniformBlock[2]
Definition eft_Shader.h:638
s32 mNormalAttr
Definition eft_Shader.h:608
s32 GetTexAnimAttribute() const
s32 GetColorAttribute0() const
void DisableInstanced()
Definition eft_Shader.cpp:160
s32 GetDirAttribute() const
UniformBlock _56c
Definition eft_Shader.h:634
s32 mTexCoordAttr0
Definition eft_Shader.h:610
UNIFORM_BLOCK_VERTEX_EMITTER_DYNAMIC_BLOCK
UNIFORM_BLOCK_VERTEX_VIEW_BLOCK
UNIFORM_BLOCK_FRAGMENTVIEW_BLOCK
UNIFORM_BLOCK_VERTEX_EMITTER_STATIC_BLOCK
UNIFORM_BLOCK_VERTEX_STRIPE_BLOCK
UNIFORM_BLOCK_FRAGMENT_EMITTER_STATIC_BLOCK
s32 GetWolrdPosDiffAttribute() const
void InitializeVertexShaderLocation()
Definition eft_Shader.cpp:47
void BindEmitterDynamicUniformBlock(EmitterDynamicUniformBlock *block)
void Finalize(Heap *heap)
Definition eft_Shader.cpp:42
FragmentTextureLocation mUserFragmentSamplerLocation[USER_SAMPLER_SLOT_MAX]
Definition eft_Shader.h:641
s32 mColorAttr
Definition eft_Shader.h:609
s32 GetIndexAttribute() const
FragmentTextureLocation mFragmentTextureSampler[EFT_TEXTURE_SLOT_MAX]
Definition eft_Shader.h:616
FragmentTextureVariation GetTextureVariation() const
s32 GetColorAttribute() const
void SetGeometryShaderKey(GeometryShaderKey *key)
UniformBlock mUserFragmentUniformBlock[2]
Definition eft_Shader.h:639
s32 GetRotateAttribute() const
FragmentTextureLocation GetUserFragmentSamplerLocation(UserSamplerSlot userSamplerSlot, const char *name)
s32 mTexAnimAttr
Definition eft_Shader.h:619
u32 mDisplayListBufferUsed
Definition eft_Shader.h:601
s32 mTexCoordAttr1
Definition eft_Shader.h:611
s32 mEmtMatAttr2
Definition eft_Shader.h:628
s32 mWldPosAttr
Definition eft_Shader.h:621
void InitializeStripeVertexShaderLocation()
Definition eft_Shader.cpp:89
s32 GetEmitterMatrix0Attribute() const
u8 mDisplayListBuffer[DISPLAY_LSIT_SIZE]
Definition eft_Shader.h:600
void SetVertexShaderKey(VertexShaderKey *key)
s32 GetScaleAttribute() const
const VertexShaderKey & GetVertexShaderKey() const
FragmentShaderVariation GetShaderVariation() const
s32 GetColorAttribute1() const
FragmentShaderKey mFragmentShaderKey
Definition eft_Shader.h:605
s32 mOuterAttr
Definition eft_Shader.h:613
s32 mEmtMatAttr1
Definition eft_Shader.h:627
s32 mEmtMatAttr0
Definition eft_Shader.h:626
VertexTextureLocation GetUserVertexSamplerLocation(UserSamplerSlot userSamplerSlot, const char *name)
s32 GetWolrdPosAttribute() const
s32 mColor1Attr
Definition eft_Shader.h:624
UniformBlock mVertexViewUniformBlock
Definition eft_Shader.h:630
void SetFragmentShaderKey(FragmentShaderKey *key)
s32 GetTextureCoordAttribute1() const
void InitializeStripeAttribute()
Definition eft_Shader.cpp:95
void BindEmitterStaticUniformBlock(EmitterStaticUniformBlock *block)
FragmentTextureLocation GetFrameBufferTextureSamplerLocation() const
UniformBlock mFragmentViewUniformBlock
Definition eft_Shader.h:631
VertexShaderKey mVertexShaderKey
Definition eft_Shader.h:604
Shader mShader
Definition eft_Shader.h:603
ParticleShader()
Definition eft_Shader.cpp:6
s32 mSclAttr
Definition eft_Shader.h:618
s32 mWldPosDfAttr
Definition eft_Shader.h:622
FragmentTextureLocation GetTextureSamplerLocation(TextureSlot slot) const
bool SetUserFragmentUniformBlock(UserUniformBlockID uniformBlockID, const char *name, void *param)
bool SetupShaderResource(Heap *heap, void *shaderResource, u32 shaderResourceSize)
Definition eft_Shader.cpp:103
UNIFORM_BLOCK_USER_VERTEX_ID_1
UNIFORM_BLOCK_USER_VERTEX_ID_0
UNIFORM_BLOCK_USER_FRAGMENT_ID_0
UNIFORM_BLOCK_USER_FRAGMENT_ID_1
void InitializeAttribute()
Definition eft_Shader.cpp:67
void BindViewUniformBlock(ViewUniformBlock *block)
s32 mPositionAttr
Definition eft_Shader.h:607
EFT_STRIPE_FLAG_EMITTER_COORD
u8 FragmentAlphaVariation
u8 FragmentCombinerTypeVariation
u8 FragmentCompositeVariation
u8 FragmentShaderVariation
EFT_FRAGMENT_SHADER_INPUT_OPT_ONE
EFT_FRAGMENT_SHADER_INPUT_OPT_MAX
EFT_FRAGMENT_SHADER_INPUT_OPT_RED
EFT_FRAGMENT_SHADER_INPUT_OPT_SRC
EFT_FRAGMENT_SHADER_TYPE_VARIATION_MAX
EFT_FRAGMENT_SHADER_TYPE_VARIATION_PARTICLE
EFT_FRAGMENT_SHADER_TYPE_VARIATION_REFRACT_PARTICLE
EFT_FRAGMENT_SHADER_TYPE_VARIATION_DISTORTION_PARTICLE
EFT_EMITTER_FLAG_TEXTURE0_ALPHA_ONE
EFT_EMITTER_FLAG_TEXTURE1_COLOR_ONE
EFT_EMITTER_FLAG_TEXTURE0_COLOR_ONE
EFT_EMITTER_FLAG_PRIMITIVE_ALPHA_ONE
EFT_EMITTER_FLAG_TEXTURE1_ALPHA_ONE
EFT_EMITTER_FLAG_PRIMITIVE_COLOR_ONE
u8 VertexBillboardTypeVariation
EFT_BILLBOARD_TYPE_COMPLEX_STRIPE
EFT_BILLBOARD_TYPE_STRIPE
EFT_STRIPE_TYPE_BILLBOARD
u8 VertexRotationVariation
EFT_FRAGMENT_SHADER_COMPOSITE_MUL
EFT_FRAGMENT_SHADER_COMPOSITE_MAX
EFT_FRAGMENT_SHADER_COMPOSITE_SUB
EFT_FRAGMENT_SHADER_COMPOSITE_ADD
EFT_CHILD_FLAG_PRIMITIVE_ALPHA_ONE
EFT_CHILD_FLAG_TEXTURE_ALPHA_ONE
EFT_CHILD_FLAG_PRIMITIVE_COLOR_ONE
EFT_CHILD_FLAG_TEXTURE_COLOR_ONE
u8 FragmentInputOptVariation
EFT_FRAGMENT_SHADER_TEXTURE_VARIATION_0
EFT_FRAGMENT_SHADER_TEXTURE_VARIATION_1
EFT_FRAGMENT_SHADER_TEXTURE_VARIATION_MAX
u8 FragmentTextureVariation
BillboardType childBillboardType
Definition eft_Data.h:1039
PtclRotType childRotType
Definition eft_Data.h:1059
ColorBlendType primitiveAlphaBlend
Definition eft_Data.h:1049
CombinerType childCombinerType
Definition eft_Data.h:1085
MeshType childMeshType
Definition eft_Data.h:1038
AlphaCombinerType childAlphaCombinerType
Definition eft_Data.h:1086
ColorBlendType primitiveColorBlend
Definition eft_Data.h:1048
FragmentInputOptVariation mTexture1ColorOpt
Definition eft_Shader.h:183
void MakeKeyFromSimpleEmitterData(const SimpleEmitterData *res, const char *userDef)
FragmentTextureVariation mTextureVariation
Definition eft_Shader.h:173
FragmentCompositeVariation mTexture1AlphaComposite
Definition eft_Shader.h:179
u8 mApplyAlpha
Definition eft_Shader.h:188
FragmentInputOptVariation mPrimitiveColorOpt
Definition eft_Shader.h:184
FragmentShaderVariation mShaderVariation
Definition eft_Shader.h:171
FragmentInputOptVariation mTexture0ColorOpt
Definition eft_Shader.h:182
FragmentCombinerTypeVariation mColorVariation
Definition eft_Shader.h:174
FragmentCompositeVariation mPrimitiveAlphaComposite
Definition eft_Shader.h:181
bool IsUsePrimitive() const
FragmentInputOptVariation mPrimitiveAlphaOpt
Definition eft_Shader.h:187
u16 _2c
Definition eft_Shader.h:193
FragmentInputOptVariation mTexture0AlphaOpt
Definition eft_Shader.h:185
u8 mUseSoftEdge
Definition eft_Shader.h:172
bool IsUseSoftEdge() const
u8 dummy[2]
Definition eft_Shader.h:194
FragmentCompositeVariation mPrimitiveColorComposite
Definition eft_Shader.h:180
u32 mUserShaderFlag
Definition eft_Shader.h:190
FragmentAlphaVariation mAlphaVariation
Definition eft_Shader.h:175
u16 _12
Definition eft_Shader.h:189
void MakeKeyFromChildData(const ChildData *res, const char *userDef, u32 childFlag)
bool IsEqual(const FragmentShaderKey *key) const
FragmentCompositeVariation mTexture1ColorComposite
Definition eft_Shader.h:178
u8 mUserShaderSetting
Definition eft_Shader.h:176
FragmentInputOptVariation mTexture1AlphaOpt
Definition eft_Shader.h:186
bool IsApplyAlpha() const
char mUserShaderCompileDef[16]
Definition eft_Shader.h:192
u32 mUserShaderSwitchFlag
Definition eft_Shader.h:191
bool mUsePrimitive
Definition eft_Shader.h:177
bool GetCompileSetting(char *compileSetting, u32 compileSettingBufferSize, bool targetCafe)
u8 mStripeType
Definition eft_Shader.h:362
u8 mDummy[3]
Definition eft_Shader.h:363
ColorBlendType texture1ColorBlend
Definition eft_Data.h:956
ColorBlendType primitiveAlphaBlend
Definition eft_Data.h:959
BillboardType billboardType
Definition eft_Data.h:923
AlphaCombinerType alphaCombinerType
Definition eft_Data.h:859
PtclRotType ptclRotType
Definition eft_Data.h:856
MeshType meshType
Definition eft_Data.h:922
CombinerType colorCombinerType
Definition eft_Data.h:858
ColorBlendType primitiveColorBlend
Definition eft_Data.h:957
ColorBlendType texture1AlphaBlend
Definition eft_Data.h:958
StripeType stripeType
Definition eft_Data.h:1163
u8 mUserShaderSetting
Definition eft_Shader.h:68
u32 mUserShaderFlag
Definition eft_Shader.h:72
bool IsEqual(const VertexShaderKey *key) const
VertexBillboardTypeVariation mVertexBillboardTypeVariation
Definition eft_Shader.h:66
VertexStripeVariation mStripeTypeVariation
Definition eft_Shader.h:69
void MakeKeyFromChildData(const ChildData *res, const char *userDef)
bool GetCompileSetting(char *compileSetting, u32 compileSettingBufferSize, bool targetCafe)
u32 mUserShaderSwitchFlag
Definition eft_Shader.h:73
bool mUsePrimitive
Definition eft_Shader.h:71
bool IsUsePrimitive() const
VertexRotationVariation mVertexRotationVariation
Definition eft_Shader.h:67
void MakeKeyFromComplexEmitterData(const ComplexEmitterData *res, const char *userDef)
void MakeKeyFromSimpleEmitterData(const SimpleEmitterData *res, const char *userDef)
bool mStripeEmitterCoord
Definition eft_Shader.h:70
char mUserShaderCompileDef[16]
Definition eft_Shader.h:74