36 SEMI_TRANSPARENCE_DEPTH,
37 SEMI_TRANSPARENCE_COLOR,
42 static constexpr u32 PREV_RENDER_MATRIX_DEFAULT_COUNT =
GxMath::VALUE_4;
58 SEMI_TRANSPARENCE_PBR,
65 VERTEX_LIT_SEMI_TRANSPARENCE,
68#if GX_ENABLE_TESSELLATION
69 SHADOW_0_TESSELLATION,
70 SHADOW_1_TESSELLATION,
71 SHADOW_2_TESSELLATION,
72 SHADOW_POINT_0_TESSELLATION,
73 SHADOW_POINT_1_TESSELLATION,
74 SHADOW_POINT_2_TESSELLATION,
77 NORMAL_PBR_TESSELLATION,
78 SEMI_TRANSPARENCE_TESSELLATION,
79 SEMI_TRANSPARENCE_PBR_TESSELLATION,
80 MOTIONBLUR_ON_TESSELLATION,
81 MOTIONBLUR_OFF_TESSELLATION,
82 VERTEX_LIT_NORMAL_TESSELLATION,
83 VERTEX_LIT_SEMI_TRANSPARENCE_TESSELLATION,
84 PRE_SHADOW_TESSELLATION,
85 POLYGON_LINE_TESSELLATION,
101 PREVIOUS_WORLD_VIEW_MATRIX,
102 INVERS_PROJECTION_MATRIX,
109 SHADOW_BUFFER_SAMPLER,
111 APPLY_LIGHTING_SEMITRANSPARENCE,
114 DIRECTIONAL_SHADOW_MASK,
116 SHADOW_LIGHT_AMBIENT_COLOR,
117 SHADOW_LIGHT_DIRECTION,
122 POINT_LIGHT_POSITION,
124 POINT_LIGHT_ORIENTATION,
126 POINT_SHADOW_LIGHT_COLOR,
127 POINT_SHADOW_LIGHT_POSITION,
128 POINT_SHADOW_LIGHT_PARAM,
129 POINT_SHADOW_LIGHT_ORIENTATION,
130 POINT_SHADOW_LIGHT_SPOT,
138 APPLY_COLOR_MAP_SECOND,
143 HIGH_SPEED_VERTEX_SHADER_MODE,
145 ALPHA_TEST_PARAMETER,
146 VERTEX_OFFSET_PARAMETER,
147 VERTEX_OFFSET_PARAMETER_2,
148 SEMITRANSPARENCE_PRIORITY_OFFSET,
149 REFRACTION_PARAMETER,
153 LIGHT_PROBE_POSITION,
165 HIGH_SPEED_COLOR_MAP_SAMPLER_STATE,
169#if defined(_PS4) || defined(_PS5)
171 COLOR_MAP_SAMPLER_MATERIAL,
174 APPLY_INTERSECTION_BLEND,
195 void postAsyncUpdate(
void)
override;
197 void forceAsyncUpdate(
void)
override;
209 void renderMeshGroupAll(
void)
override;
213 void renderMesh(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount)
override;
215 virtual void renderMeshNormal(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount);
217 virtual void renderMeshShadow(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount);
219 virtual void renderMeshPointShadow(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount);
221 virtual void renderMeshEnv(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount);
223 virtual void renderMeshPolygonLine(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount);
224#if GX_ENABLE_OCCLUSION_CULLING
226 void renderOcclusionQuery(u32 startIndex, u32 count,
const GxRenderMaterial* pMaterial, u32 instanceStartIndex, u32 instanceCount);
234 void updateLightContext(
b32 updateContext);
237 virtual void updateMeshCullingFlagShadow(
RENDER_VIEW view, CULLING_FRUSTUM frustumtype, u32 cascadeLevel);
241 virtual void updateMeshCullingFlagEnvironmentMap(
RENDER_VIEW view, CULLING_FRUSTUM frustumtype);
243 virtual void updateInstanceCullingFlagShadow(
RENDER_VIEW view, CULLING_FRUSTUM frustumtype, u32 cascadeLevel);
247 virtual void updateInstanceCullingFlagEnvironmentMap(
RENDER_VIEW view, CULLING_FRUSTUM frustumType);
255 b32 hasSemiTransparenceMaterial(
void);
257 b32 isUseSemiTransparenceDepthPass(
void);
259 void renderInitializeSemiTransparence(
void);
261 u32 getRenderPolygonCount(u32 startIndex, u32 count, u32 instanceStartIndex, u32 instanceCount);
266 virtual void loadShaderHandles(
void);
291 GX_FORCE_INLINE
b32 isMaskEnable(
void)
const {
return _maskEnable; }
293 GX_FORCE_INLINE
void setMaskEnable(
b32 enable) { _maskEnable = enable; }
298 constexpr u32 getPolygonCount(
void)
const {
return _polygonCount; }
300 constexpr u32 getDrawCallCountOpacity(
void)
const {
return _drawCallCountOpacity; }
302 constexpr u32 getDrawCallCountSemiTransparence(
void)
const {
return _drawCallCountSemiTransparence; }
304 constexpr u32 getDrawCallCountShadow(
void)
const {
return _drawCallCountShadow; }
306 constexpr u32 getDrawCallCountEnv(
void)
const {
return _drawCallCountEnv; }
309 GX_FORCE_INLINE
b32 isEnableSemiTransparencePriority(
void)
const {
return _enableSemiTransparencePriority; }
311 GX_FORCE_INLINE
void setEnableSemiTransparencePriority(
b32 enable) { _enableSemiTransparencePriority = enable; }
313 constexpr f32 getSemiTransparencePriority(
void)
const {
return _semiTransparencePriority; }
315 constexpr void setSemiTransparencePriority(f32 value) { _semiTransparencePriority = value; }
317 f32 getCurrentSemiTransparencePriority(u32 startIndex);
345 u32 _renderPolygonCountOpacity;
346 u32 _renderPolygonCountSemiTransparence;
347 u32 _renderPolygonCountShadow;
348 u32 _renderPolygonCountPolygonLine;
350 u32 _drawCallCountOpacity;
351 u32 _drawCallCountSemiTransparence;
352 u32 _drawCallCountShadow;
353 u32 _drawCallCountEnv;
354 u32 _drawCallCountPolygonLine;
360 static GX_HANDLE _handles[
static_cast<u32
>(SHADER_HANDLE::MAX)];