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 getRhiSkyIblPreFilterShader();
60 QSSGRhiShaderPipelinePtr getRhiSkyIblPreFilterNormalizeShader();
61 QSSGRhiShaderPipelinePtr getRhienvironmentmapPreFilterShader(
bool isRGBE);
62 QSSGRhiShaderPipelinePtr getRhiEnvironmentmapShader();
63 QSSGRhiShaderPipelinePtr getRhiClearMRTShader();
64 QSSGRhiShaderPipelinePtr getRhiOitCompositeShader(QSSGRenderLayer::OITMethod method,
bool multisample,
bool use_buffers =
false);
65 QSSGRhiShaderPipelinePtr getRhiCubeMapToAtlasShader();
66 QSSGRhiShaderPipelinePtr getRhiClearShadowMapShader();
67 QSSGRhiShaderPipelinePtr getRhiClearImageShader();
68 QSSGRhiShaderPipelinePtr getRhiClearBufferShader();
71 QSSGShaderCache &m_shaderCache;
73 struct BuiltinShader {
76 QSSGRhiShaderPipelinePtr shaderPipeline;
80 QSSGRhiShaderPipelinePtr getBuiltinRhiShader(
const QByteArray &name,
81 BuiltinShader &storage,
83 QSSGRhiShaderPipeline::StageFlags vertexStageFlags = QSSGRhiShaderPipeline::UsedWithoutIa);
84 static constexpr int motionvectorShaderCount = 8;
85 static constexpr int particleShaderCount = 2;
86 static constexpr int compositeShaderCount = 6;
88 BuiltinShader gridShader;
89 BuiltinShader ssaoRhiShader;
90 BuiltinShader skyBoxRhiShader[QSSGRenderLayer::TonemapModeCount * 2 ];
91 BuiltinShader skyBoxCubeRhiShader;
92 BuiltinShader supersampleResolveRhiShader;
93 BuiltinShader progressiveAARhiShader;
94 BuiltinShader texturedQuadRhiShader;
95 BuiltinShader simpleQuadRhiShader;
96 BuiltinShader lightmapUVRasterShader;
97 BuiltinShader lightmapUVRasterShader_uv;
98 BuiltinShader lightmapUVRasterShader_uv_tangent;
99 BuiltinShader lightmapDilateShader;
100 BuiltinShader debugObjectShader;
102 BuiltinShader reflectionprobePreFilterShader;
103 BuiltinShader skyIblPreFilterShader;
104 BuiltinShader skyIblPreFilterNormalizeShader;
105 BuiltinShader environmentmapPreFilterShader[2];
106 BuiltinShader environmentmapShader;
108 BuiltinShader clearMRTShader;
109 BuiltinShader oitCompositeShader[compositeShaderCount];
110 BuiltinShader cubeMapToAtlasShader;
111 BuiltinShader clearShadowMapShader;
112 BuiltinShader clearImageShader;
113 BuiltinShader clearBufferShader;
114 BuiltinShader motionVectorRhiShader[motionvectorShaderCount];
115 BuiltinShader temporalAARhiShader;