Revision control
Copy as Markdown
// Copyright (C) 2026 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick3D
import QtQuick3D.Helpers
import Example
SkyMaterial {
id: skyMaterial
required property Node skyLight
fragmentShader: "advancedsky.frag"
iblSampleCount: 128
property int lutSize: 128
property int lutSizeTransmit: 128
property real aerosolBaseDensity: 1.3681e20
property real aerosolBackgroundDensity: 2e6
property real aerosolHeightScale: 0.73
property real aerosolBackgroundDividedByBaseDensity: aerosolBackgroundDensity / aerosolBaseDensity
property real ozoneMeanMonthlyDobson: 347
property real aerosolTurbidity: 1
property vector4d aerosolAbsorptionCrossSection: Qt.vector4d(2.8722e-24, 4.6168e-24, 7.9706e-24, 1.3578e-23)
property vector4d aerosolScatteringCrossSection: Qt.vector4d(1.5908e-22, 1.7711e-22, 2.0942e-22, 2.4033e-22)
property vector4d groundAlbedo: Qt.vector4d(0.3, 0.3, 0.3, 0.3)
property int aerosolType: 8
property real eyeAltitude: 0.05
property real sunEnergy: 1.0
property vector3d sunColor: Qt.vector3d(1, 1, 1)
// Atmosphere coords: x stays, swap y/z, flip y. Both the advanced-sky frag and the
// LUT shaders (skytexture/transmittance) sample this in the same convention.
property vector3d sunDirection: Qt.vector3d(skyLight.forward.x, skyLight.forward.z, -skyLight.forward.y)
property real sunDiskInnerAngle: 1.5
property real sunDiskOuterAngle: 10.0
property real sunDiskFalloff: 0.05
property real sunAlpha: 1.0
// Volumetric clouds
property bool cloudsEnabled: false
property real cloudCoverage: 0.4
property real cloudDensityScale: 1.6
property real cloudBottomKm: 3.3
property real cloudTopKm: 4.9
property real cloudScale: 6.0
property vector2d cloudWindOffset: Qt.vector2d(0.0, 0.0)
property real cloudTimeOffset: 0.0
property real cloudExtinction: 0.7
property real cloudPhaseG: 0.45
property int cloudPrimarySteps: 64
property int cloudLightSteps: 4
property real cloudMaxDistanceKm: 80.0
// Pre-baked 3D Worley/Perlin noise volume used by the cloud raymarch
property Texture noiseVolume: Texture {
tilingModeHorizontal: Texture.Repeat
tilingModeVertical: Texture.Repeat
magFilter: Texture.Linear
minFilter: Texture.Linear
textureData: CloudNoiseTextureData {}
}
property Texture skytextureBuffer: Texture {
tilingModeVertical: Texture.ClampToEdge
tilingModeHorizontal: Texture.ClampToEdge
textureProvider: QuadTextureProvider {
fragmentShader: "skytexture.frag"
format: Buffer.RGBA16F
width: skyMaterial.lutSize
height: skyMaterial.lutSize
property real aerosolBaseDensity: skyMaterial.aerosolBaseDensity
property real aerosolHeightScale: skyMaterial.aerosolHeightScale
property real aerosolBackgroundDividedByBaseDensity: skyMaterial.aerosolBackgroundDividedByBaseDensity
property real ozoneMeanMonthlyDobson: skyMaterial.ozoneMeanMonthlyDobson
property real aerosolTurbidity: skyMaterial.aerosolTurbidity
property vector4d aerosolAbsorptionCrossSection: skyMaterial.aerosolAbsorptionCrossSection
property vector4d aerosolScatteringCrossSection: skyMaterial.aerosolScatteringCrossSection
property vector4d groundAlbedo: skyMaterial.groundAlbedo
property int aerosolType: skyMaterial.aerosolType
property real eyeAltitude: skyMaterial.eyeAltitude
property real sunEnergy: skyMaterial.sunEnergy
property vector3d sunColor: skyMaterial.sunColor
property vector3d sunDirection: skyMaterial.sunDirection
property real sunDiskInnerAngle: skyMaterial.sunDiskInnerAngle
property real sunDiskOuterAngle: skyMaterial.sunDiskOuterAngle
property real sunDiskFalloff: skyMaterial.sunDiskFalloff
property real sunAlpha: skyMaterial.sunAlpha
property Texture transmittanceBuffer: Texture {
tilingModeVertical: Texture.ClampToEdge
tilingModeHorizontal: Texture.ClampToEdge
textureProvider: QuadTextureProvider {
fragmentShader: "transmittance.frag"
format: Buffer.RGBA16F
width: skyMaterial.lutSizeTransmit
height: skyMaterial.lutSizeTransmit
property real aerosolBaseDensity: skyMaterial.aerosolBaseDensity
property real aerosolBackgroundDensity: skyMaterial.aerosolBackgroundDensity
property real aerosolHeightScale: skyMaterial.aerosolHeightScale
property real aerosolBackgroundDividedByBaseDensity: skyMaterial.aerosolBackgroundDividedByBaseDensity
property real ozoneMeanMonthlyDobson: skyMaterial.ozoneMeanMonthlyDobson
property real aerosolTurbidity: skyMaterial.aerosolTurbidity
property vector4d aerosolAbsorptionCrossSection: skyMaterial.aerosolAbsorptionCrossSection
property vector4d aerosolScatteringCrossSection: skyMaterial.aerosolScatteringCrossSection
property vector4d groundAlbedo: skyMaterial.groundAlbedo
property int aerosolType: skyMaterial.aerosolType
property real eyeAltitude: skyMaterial.eyeAltitude
property real sunEnergy: skyMaterial.sunEnergy
property vector3d sunColor: skyMaterial.sunColor
property vector3d sunDirection: skyMaterial.sunDirection
property real sunDiskInnerAngle: skyMaterial.sunDiskInnerAngle
property real sunDiskOuterAngle: skyMaterial.sunDiskOuterAngle
property real sunDiskFalloff: skyMaterial.sunDiskFalloff
property real sunAlpha: skyMaterial.sunAlpha
}
}
}
}
}