35 explicit QSSGBuiltInRhiShaderCache(QSSGShaderCache &shaderCache)
36 : m_shaderCache(shaderCache) {}
38 void releaseCachedResources();
40 enum class LightmapUVRasterizationShaderMode {
46 QSSGRhiShaderPipelinePtr getRhiGridShader(
int viewCount);
47 QSSGRhiShaderPipelinePtr getRhiSsaoShader(
int viewCount);
48 QSSGRhiShaderPipelinePtr getRhiSkyBoxCubeShader(QSSGRenderLayer::TonemapMode tonemapMode,
bool isLinear,
int viewCount);
49 QSSGRhiShaderPipelinePtr getRhiSkyBoxShader(QSSGRenderLayer::TonemapMode tonemapMode,
bool isRGBE,
int viewCount);
50 QSSGRhiShaderPipelinePtr getRhiSupersampleResolveShader(
int viewCount);
51 QSSGRhiShaderPipelinePtr getRhiProgressiveAAShader();
52 QSSGRhiShaderPipelinePtr getRhiMotionVectorShader(
bool skin,
bool instance,
bool morph);
53 QSSGRhiShaderPipelinePtr getRhiTemporalAAShader();
54 QSSGRhiShaderPipelinePtr getRhiSimpleQuadShader(
int viewCount, QSSGRenderLayer::TonemapMode tonemapMode = QSSGRenderLayer::TonemapMode::None);
55 QSSGRhiShaderPipelinePtr getRhiLightmapUVRasterizationShader(LightmapUVRasterizationShaderMode mode);
56 QSSGRhiShaderPipelinePtr getRhiLightmapDilateShader();
57 QSSGRhiShaderPipelinePtr getRhiDebugObjectShader(
int viewCount);
58 QSSGRhiShaderPipelinePtr getRhiReflectionprobePreFilterShader();
59 QSSGRhiShaderPipelinePtr getRhienvironmentmapPreFilterShader(
bool isRGBE);
60 QSSGRhiShaderPipelinePtr getRhiEnvironmentmapShader();
61 QSSGRhiShaderPipelinePtr getRhiClearMRTShader();
62 QSSGRhiShaderPipelinePtr getRhiOitCompositeShader(QSSGRenderLayer::OITMethod method,
bool multisample,
bool use_buffers =
false);
63 QSSGRhiShaderPipelinePtr getRhiCubeMapToAtlasShader();
64 QSSGRhiShaderPipelinePtr getRhiClearShadowMapShader();
65 QSSGRhiShaderPipelinePtr getRhiClearImageShader();
66 QSSGRhiShaderPipelinePtr getRhiClearBufferShader();
69 QSSGShaderCache &m_shaderCache;
71 struct BuiltinShader {
74 QSSGRhiShaderPipelinePtr shaderPipeline;
78 QSSGRhiShaderPipelinePtr getBuiltinRhiShader(
const QByteArray &name,
79 BuiltinShader &storage,
81 QSSGRhiShaderPipeline::StageFlags vertexStageFlags = QSSGRhiShaderPipeline::UsedWithoutIa);
82 static constexpr int motionvectorShaderCount = 8;
83 static constexpr int particleShaderCount = 2;
84 static constexpr int compositeShaderCount = 6;
86 BuiltinShader gridShader;
87 BuiltinShader ssaoRhiShader;
88 BuiltinShader skyBoxRhiShader[QSSGRenderLayer::TonemapModeCount * 2 ];
89 BuiltinShader skyBoxCubeRhiShader;
90 BuiltinShader supersampleResolveRhiShader;
91 BuiltinShader progressiveAARhiShader;
92 BuiltinShader texturedQuadRhiShader;
93 BuiltinShader simpleQuadRhiShader;
94 BuiltinShader lightmapUVRasterShader;
95 BuiltinShader lightmapUVRasterShader_uv;
96 BuiltinShader lightmapUVRasterShader_uv_tangent;
97 BuiltinShader lightmapDilateShader;
98 BuiltinShader debugObjectShader;
100 BuiltinShader reflectionprobePreFilterShader;
101 BuiltinShader environmentmapPreFilterShader[2];
102 BuiltinShader environmentmapShader;
104 BuiltinShader clearMRTShader;
105 BuiltinShader oitCompositeShader[compositeShaderCount];
106 BuiltinShader cubeMapToAtlasShader;
107 BuiltinShader clearShadowMapShader;
108 BuiltinShader clearImageShader;
109 BuiltinShader clearBufferShader;
110 BuiltinShader motionVectorRhiShader[motionvectorShaderCount];
111 BuiltinShader temporalAARhiShader;