32 enum class SkyboxMode { Cubemap, ScreenSpaceFull, ScreenSpaceHalf, ScreenSpaceQuarter };
34 int radianceMapSize = 512;
35 int iblSampleCount = 16;
36 int iblSamplesPerFrame = 0;
37 int iblRenderFrames = 0;
38 SkyboxMode skyboxMode = SkyboxMode::Cubemap;
39 bool wantsMoreFrames =
false;
40 bool enableIBL =
false;
42 QSSGRenderSkyMaterial();
43 ~QSSGRenderSkyMaterial();
45 QList<QSSGBaseTypeProperty> propertyUniforms;
48 QSSGRhiShaderPipelinePtr iblPassPipeline;
51 QSSGRhiShaderPipelinePtr backgroundPipeline;
53 QSSGRhiShaderPipelinePtr ensurePipeline(
const QSSGRenderContextInterface &sgContext);
54 QSSGRhiShaderPipelinePtr ensureBackgroundPipeline(
const QSSGRenderContextInterface &sgContext,
55 const QSSGShaderFeatures &tonemapFeatures,
60 quint32 updateUniforms(
const QSSGRenderContextInterface &sgContext,
const QMatrix4x4 &mvp,
const QVarLengthArray<QMatrix4x4, 6> views);
61 void updateBackgroundUniforms(
const QSSGRenderContextInterface &sgContext,
62 const QVarLengthArray<QMatrix4x4, 2> &inverseProjections,
63 const QVarLengthArray<QMatrix4x4, 2> &viewRotations,
67 QByteArray fragmentShaderSource;
69 QByteArray shaderPathKey =
"sky material --";
72 bool isFragmentShaderDirty =
true;
73 bool isBackgroundShaderDirty =
true;
75 QSSGRhiShaderResourceBindingList bindings;
76 QSSGRhiShaderResourceBindingList backgroundBindings;
79 QSSGRhiShaderPipelinePtr buildPipeline(
const QSSGRenderContextInterface &sgContext,
80 QByteArray vertexShader,
81 const QSSGShaderCustomMaterialAdapter::StringPairList &vertexViewDependentUniforms,
82 const QSSGShaderCustomMaterialAdapter::StringPairList &vertexUniforms,
83 const QByteArray &fragmentMainSnippet,
84 const QSSGShaderCustomMaterialAdapter::StringPairList &fragmentUniforms,
85 const QSSGShaderFeatures &features,
87 const QByteArray &cacheKeyTag);
89 quint32 m_backgroundTonemapKey = quint32(-1);
90 int m_backgroundViewCount = 0;
friend class QSSGLayerRenderData
friend class QSSGRenderer
void rhiPrepareSkyBox(const QSSGRenderContextInterface &context, QSSGPassKey passKey, QSSGRenderLayer &layer, QSSGRenderCameraList &cameras, QSSGRenderer &renderer, uint tonemapMode=0)