Sur cette page

SkyMaterial QML Type

Affiche un ciel procédural et génère des données d'éclairage basées sur des images. En savoir plus...

Import Statement: import QtQuick3D
Since: Qt 6.12

Propriétés

Description détaillée

SkyMaterial génère un environnement de ciel dans une carte cubique à l'aide d'un code de shader de fragment personnalisé. La carte cubique obtenue peut, si on le souhaite, être filtrée et utilisée comme éclairage basé sur une image (IBL) pour un rendu basé sur la physique.

Le shader est évalué pour les six faces de la cubemap et peut mettre en œuvre des ciels procéduraux arbitraires, des dégradés ou des modèles analytiques.

La cubemap générée sert à la fois d’arrière-plan de la scène visible et de source d’éclairage basé sur une image (IBL) lorsqu’il est activé.

Remarque : les modifications apportées au code ou aux propriétés du shader peuvent prendre une image ou plus avant d’être prises en compte dans l’IBL généré.

Shader

Le shader a accès à la variable intégrée qt_eyeDir (vec3), qui fournit le vecteur de direction non normalisé allant du centre de la carte cubique à la direction d'échantillonnage actuelle.

Le shader de fragment doit définir un point d’entrée MAIN(), qui est exécuté pour chaque fragment généré lors du rendu de la carte cubique.

La couleur finale du pixel doit être écrite dans FRAGCOLOR (vec4), qui est la variable de sortie du shader de fragment.

Exemple de shader minimal :

void MAIN()
{
    vec3 dir = normalize(qt_eyeDir);

    // Output color (encoded direction as RGB)
    FRAGCOLOR = vec4(dir * 0.5 + 0.5, 1.0);
}

Les propriétés QML personnalisées déclarées sur SkyMaterial sont automatiquement exposées en tant qu’uniformes dans le shader de fragment. Le nom de la propriété doit correspondre au nom de la variable GLSL. Aucune déclaration explicite d’uniforme n’est requise.

Les correspondances de types suivantes sont prises en charge :

Type QMLType de shaderRemarques
real, int, boolfloat, int, bool
couleurvec4sRGB est converti en espace linéaire
vector2dvec2
vecteur3dvec3
vecteur4dvec4
matrice4x4mat4
quaternionvec4w stocke la composante scalaire
rectvec4
point, taillevec2
TextureInputsampler2D

Documentation des propriétés

enableIBL : bool [default: true, since 6.12]

Détermine si la carte cubique du ciel générée est utilisée pour l'éclairage basé sur des images.

Lorsque cette option est activée, le moteur génère des cartes de radiance et d'irradiance filtrées utilisées pour l'éclairage ambiant et les reflets dans le rendu basé sur la physique.

Lorsqu'elle est désactivée, le ciel est uniquement rendu en tant qu'arrière-plan visuel et aucun prétraitement IBL n'est effectué.

Cette propriété a été introduite dans Qt 6.12.

Voir également SceneEnvironment::lightProbe.

fragmentShader : url [since 6.12]

Spécifie un shader de fragment chargé à partir d'un fichier ou d'une URL de ressource.

Si les paramètres `fragmentShader` et ` fragmentShaderCode ` sont tous deux définis, ` fragmentShaderCode ` est prioritaire.

Si aucun shader n’est spécifié, un shader de débogage intégré est utilisé.

Cette propriété a été introduite dans Qt 6.12.

Voir également fragmentShaderCode.

fragmentShaderCode : string [since 6.12]

Spécifie le code source d'un shader de fragment en ligne.

Ce comportement est identique à celui de ` fragmentShader ` et utilise le même modèle d'exécution, les mêmes fonctions intégrées et le même mappage automatique des propriétés vers les variables uniformes.

Si les propriétés « fragmentShader » et « fragmentShaderCode » sont toutes deux définies, cette propriété a la priorité.

Cette propriété a été introduite dans Qt 6.12.

Voir également fragmentShader.

iblRenderFrames : int [default: 0, since 6.12]

Détermine la manière dont le fonctionnement du préfiltre IBL est réparti entre les images.

  • 0 — Tout dans une seule trame : l'accumulation des échantillons, la normalisation et l'irradiance sont toutes évaluées dans la même trame.
  • N ≥ 1 — Les échantillons d’ iblSampleCount s sont répartis sur N images de coupe (ceil(iblSampleCount / N) s d’échantillons par image), suivies d’une image dédiée à la normalisation et à l’irradiance.

Des valeurs plus élevées répartissent le coût du préfiltre GGX sur un plus grand nombre d’images, ce qui est utile lorsque le ciel change peu fréquemment et qu’une é iblSampleCount élevée est requise pour garantir la qualité.

Remarque : cette propriété n’a aucun effet lorsque l’ enableIBL est false.

Cette propriété a été introduite dans Qt 6.12.

Voir également iblSampleCount et enableIBL.

iblSampleCount : int [default: 32, since 6.12]

Nombre total d'échantillons d'importance GGX évalués par texel de sortie de la carte de radiance filtrée. Des valeurs plus élevées réduisent les scintillements sur les éléments à haute fréquence tels que le disque solaire, au détriment du temps de génération.

Les valeurs sont limitées à l'intervalle [1, 1024].

Remarque : cette propriété n’a aucun effet lorsque la valeur de « enableIBL » est définie sur « false ».

Cette propriété a été introduite dans Qt 6.12.

Voir également « iblRenderFrames » et « enableIBL ».

radianceMapSize : int [default: 512, since 6.12]

Définit la résolution de la carte cubique d'environnement générée, utilisée pour l'éclairage basé sur des images et les sondes de réflexion.

Des valeurs plus élevées améliorent la netteté des reflets et la qualité de l'éclairage, en particulier pour les matériaux brillants, mais augmentent l'utilisation de la mémoire et le coût de rendu.

Les valeurs sont arrondies à la puissance de deux la plus proche et limitées à la plage [8, 2048].

Remarque : lorsque l’option « skyboxMode » est définie sur une valeur « ScreenSpace », le ciel visible est évalué directement à l’écran et cette propriété n’affecte que la carte cubique IBL/de réflexion. Avec l’option « SkyMaterial.Cubemap », elle détermine également la netteté de l’arrière-plan visible. Lorsque l’option « enableIBL » est définie sur « false », que l’option « skyboxMode » prend une valeur « ScreenSpace » et qu’aucune sonde de réflexion n’est présente, aucune carte cubique n’est générée.

Cette propriété a été introduite dans Qt 6.12.

Voir également skyboxMode et enableIBL.

skyboxMode : enumeration [default: SkyMaterial.Cubemap, since 6.12]

Permet de sélectionner l'élément généré par l'SkyMaterial e pour l'arrière-plan visible.

ConstanteDescription
SkyMaterial.CubemapL’arrière-plan échantillonne la carte de radiance en cube (le même cube que celui utilisé pour l’éclairage basé sur une image), dont la résolution dépend de l’ radianceMapSize. Pour un ciel statique, le cube est rendu une seule fois puis échantillonné à moindre coût à chaque image ; il s’agit donc du coût par image le plus faible lorsque seule la caméra est en mouvement. La netteté est plafonnée à radianceMapSize.
SkyMaterial.ScreenSpaceFullLe shader du ciel est évalué directement à l’écran à la résolution maximale de la fenêtre d’affichage à chaque image (rendu le plus net, le plus coûteux).
SkyMaterial.ScreenSpaceHalfÉvaluation directe dans l’espace écran à la moitié de la résolution par axe (un quart des pixels), puis upscalée à la fenêtre d’affichage.
SkyMaterial.ScreenSpaceQuarterÉvaluation directe dans l’espace écran à un quart de la résolution par axe (un seizième des pixels), upscalée vers la fenêtre d’affichage.

Les modes « ScreenSpace » dissocient l’arrière-plan visible du cube IBL et conviennent le mieux aux ciels dynamiques (par exemple, soleil en mouvement, nuages volumétriques animés) ; « Cubemap » est le mieux adapté aux ciels statiques. « Cubemap » force la génération de la carte cubique même lorsque « enableIBL » est défini sur « false ».

Cette propriété a été introduite dans Qt 6.12.

Voir également radianceMapSize et enableIBL.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.