33 explicit QSSGBuiltInRhiShaderCache(QSSGShaderCache &shaderCache)
34 : m_shaderCache(shaderCache) {}
36 void releaseCachedResources();
38 enum class LightmapUVRasterizationShaderMode {
44 QSSGRhiShaderPipelinePtr getRhiGridShader(
int viewCount);
45 QSSGRhiShaderPipelinePtr getRhiSsaoShader(
int viewCount);
46 QSSGRhiShaderPipelinePtr getRhiSkyBoxCubeShader(
int viewCount);
47 QSSGRhiShaderPipelinePtr getRhiSkyBoxShader(QSSGRenderLayer::TonemapMode tonemapMode,
bool isRGBE,
int viewCount);
48 QSSGRhiShaderPipelinePtr getRhiSupersampleResolveShader(
int viewCount);
49 QSSGRhiShaderPipelinePtr getRhiProgressiveAAShader();
50 QSSGRhiShaderPipelinePtr getRhiParticleShader(QSSGRenderParticles::FeatureLevel featureLevel,
int viewCount, QSSGRenderLayer::OITMethod method);
51 QSSGRhiShaderPipelinePtr getRhiSimpleQuadShader(
int viewCount);
52 QSSGRhiShaderPipelinePtr getRhiLightmapUVRasterizationShader(LightmapUVRasterizationShaderMode mode);
53 QSSGRhiShaderPipelinePtr getRhiLightmapDilateShader();
54 QSSGRhiShaderPipelinePtr getRhiDebugObjectShader(
int viewCount);
55 QSSGRhiShaderPipelinePtr getRhiReflectionprobePreFilterShader();
56 QSSGRhiShaderPipelinePtr getRhienvironmentmapPreFilterShader(
bool isRGBE);
57 QSSGRhiShaderPipelinePtr getRhiEnvironmentmapShader();
58 QSSGRhiShaderPipelinePtr getRhiClearMRTShader();
59 QSSGRhiShaderPipelinePtr getRhiOitCompositeShader(QSSGRenderLayer::OITMethod method,
bool multisample);
60 QSSGRhiShaderPipelinePtr getRhiCubeMapToAtlasShader();
61 QSSGRhiShaderPipelinePtr getRhiClearShadowMapShader();
64 QSSGShaderCache &m_shaderCache;
66 struct BuiltinShader {
69 QSSGRhiShaderPipelinePtr shaderPipeline;
73 QSSGRhiShaderPipelinePtr getBuiltinRhiShader(
const QByteArray &name,
74 BuiltinShader &storage,
76 static constexpr int particleShaderCount = 2;
77 static constexpr int compositeShaderCount = 2;
79 BuiltinShader gridShader;
80 BuiltinShader ssaoRhiShader;
81 BuiltinShader skyBoxRhiShader[QSSGRenderLayer::TonemapModeCount * 2 ];
82 BuiltinShader skyBoxCubeRhiShader;
83 BuiltinShader supersampleResolveRhiShader;
84 BuiltinShader progressiveAARhiShader;
85 BuiltinShader texturedQuadRhiShader;
86 BuiltinShader simpleQuadRhiShader;
87 BuiltinShader lightmapUVRasterShader;
88 BuiltinShader lightmapUVRasterShader_uv;
89 BuiltinShader lightmapUVRasterShader_uv_tangent;
90 BuiltinShader lightmapDilateShader;
91 BuiltinShader debugObjectShader;
93 BuiltinShader reflectionprobePreFilterShader;
94 BuiltinShader environmentmapPreFilterShader[2];
95 BuiltinShader environmentmapShader;
97 BuiltinShader particlesNoLightingSimpleRhiShader[particleShaderCount];
98 BuiltinShader particlesNoLightingMappedRhiShader[particleShaderCount];
99 BuiltinShader particlesNoLightingAnimatedRhiShader[particleShaderCount];
100 BuiltinShader particlesVLightingSimpleRhiShader[particleShaderCount];
101 BuiltinShader particlesVLightingMappedRhiShader[particleShaderCount];
102 BuiltinShader particlesVLightingAnimatedRhiShader[particleShaderCount];
103 BuiltinShader lineParticlesRhiShader[particleShaderCount];
104 BuiltinShader lineParticlesMappedRhiShader[particleShaderCount];
105 BuiltinShader lineParticlesAnimatedRhiShader[particleShaderCount];
106 BuiltinShader lineParticlesVLightRhiShader[particleShaderCount];
107 BuiltinShader lineParticlesMappedVLightRhiShader[particleShaderCount];
108 BuiltinShader lineParticlesAnimatedVLightRhiShader[particleShaderCount];
110 BuiltinShader clearMRTShader;
111 BuiltinShader oitCompositeShader[compositeShaderCount];
112 BuiltinShader cubeMapToAtlasShader;
113 BuiltinShader clearShadowMapShader;