Crée un effet de glace photoréaliste avec fissures internes, bulles d'air
emprisonnées, réflexions et réfractions basées sur l'environnement.
Utilise la technique de Parallax Occlusion Mapping (POM) pour simuler
la profondeur et les structures internes sans géométrie supplémentaire.
Technique principale :
Raymarching dans le fragment shader pour la profondeur 3D
Height map procédural en espace monde (sans UVs)
Perturbation de normales basée sur le gradient de hauteur
Initialise tous les paramètres de l'effet, les uniforms par défaut,
les presets de types de glace et la configuration du mapping UI.
Configure automatiquement les dépendances si environmentManager
est fourni.
Définit les paramètres Three.js nécessaires pour le rendu correct
de l'effet de glace :
Transparence activée pour l'alpha
Face avant uniquement (optimisation)
Depth write et test pour l'ordre de rendu
Extensions shader (derivatives pour normales)
Cubemap d'environnement initial
Parameters
material: ShaderMaterial
Matériau à configurer
Optionaloptions: any = {}
Options de configuration additionnelles
Returns ShaderMaterial
Matériau configuré
dispose
dispose():void
Nettoie les ressources de l'effet
Libère les références au matériau pour permettre le garbage collection.
Appelé lors de la destruction de l'effet ou du changement d'effet.
Returns void
getDefaultUniforms
getDefaultUniforms():any
Retourne les uniforms par défaut de l'effet
Crée un clone des uniforms par défaut pour éviter les modifications
par référence. Utilisé par le ShaderManager lors de la création du
matériau shader.
Returns any
Clone des uniforms par défaut
getShaders
getShaders():any
Retourne les shaders vertex et fragment
Fournit les sources GLSL des shaders au ShaderManager pour la
création du matériau.
Appelé lors de l'application de l'effet à un objet
Hook du cycle de vie déclenché par le ShaderManager quand l'effet
est appliqué. Stocke la référence au matériau, réinitialise le temps
global et applique le preset actuel.
Parameters
object: Object3D
Objet 3D cible
material: ShaderMaterial
Matériau shader créé pour l'effet
Returns void
onRemoved
onRemoved(object:Object3D):void
Appelé lors du retrait de l'effet
Hook du cycle de vie déclenché par le ShaderManager quand l'effet
est retiré de l'objet. Nettoie la référence au matériau.
Parameters
object: Object3D
Objet 3D dont l'effet est retiré
Returns void
reset
reset():void
Réinitialise l'effet à son état initial
Remet à zéro le temps global de l'effet. Utile pour redémarrer
les animations temporelles ou réinitialiser l'état visuel.
Permet d'injecter ou de mettre à jour les dépendances après
l'instanciation de l'effet. Réinitialise automatiquement les
références internes si environmentManager est fourni.
Parameters
deps: {environmentManager:EnvironmentManager}
Objet contenant les dépendances
environmentManager: EnvironmentManager
Gestionnaire d'environnement
Returns void
setIcePreset
setIcePreset(preset:string):void
Change le preset de type de glace
Applique une configuration prédéfinie de paramètres pour simuler
différents types de glace : glace claire, eau gelée, glacier,
givre ou glace bleue. Met à jour instantanément le matériau actif
si l'effet est déjà appliqué.
Presets disponibles :
clear_ice : Glace cristalline transparente
frozen_water : Eau gelée naturelle avec bulles
glacier : Glace bleue profonde avec fissures
frost : Givre opaque
blue_ice : Glace arctique translucide
Parameters
preset: string
Nom du preset (clear_ice, frozen_water, glacier, frost, blue_ice)
Returns void
showPreview
showPreview():void
Affiche un aperçu de l'effet
Réservé pour une implémentation future. Pourrait afficher une
prévisualisation de l'effet dans l'interface utilisateur avant
l'application.
Gère les changements de paramètres depuis les contrôles UI (sliders,
pills, checkboxes). Applique les transformations définies dans uiMapping,
met à jour les propriétés internes et les uniforms du shader.
Gestion spéciale :
Presets : Appelle setIcePreset() au lieu de mettre à jour directement
Checkboxes : Transforme boolean en 0.0/1.0 pour les uniforms
Sliders : Applique les transformations de plage (0-100 → min-max)
Parameters
material: ShaderMaterial
Matériau shader à mettre à jour
controlId: string
ID du contrôle UI (ex: "pom-depth", "ice-preset")
value: string|number|boolean
Nouvelle valeur du contrôle
Returns void
updateLights
updateLights(material:ShaderMaterial):void
Synchronise les uniforms de lumière avec le LightsManager
Récupère la lumière directionnelle principale depuis le LightsManager
et met à jour les uniforms correspondants dans le matériau shader.
Cette fonction est appelée à chaque frame pour maintenir la cohérence
avec les changements de lumière (intensité, couleur, position).
Met à jour :
uMainLightPosition : Position/direction de la lumière
Effet de Glace avec Parallax Occlusion Mapping
Crée un effet de glace photoréaliste avec fissures internes, bulles d'air emprisonnées, réflexions et réfractions basées sur l'environnement. Utilise la technique de Parallax Occlusion Mapping (POM) pour simuler la profondeur et les structures internes sans géométrie supplémentaire.
Technique principale :