Miroirs
Un miroir est un script FL# : une caméra créée par le script fait le rendu du reflet dans une texture, et le shader du miroir l'affiche. Le monde d'exemple en a un complet, PlanarMirror.cs avec le shader NodeWorld Example/Mirror : pars de lui.
En mettre un dans ton monde
- Importe l'exemple Example World (installer le SDK), puis copie
Flux/PlanarMirror.csetShaders/Mirror.shaderdans les dossiers de ton monde : le script dans ton dossier de scripts FL#, le shader n'importe où dansAssets. Ils sont à toi, tu peux les changer. - Ajoute
PlanarMirror.csaux Flux Sharp Sources de ta NW World Config. - Crée un Quad : sa face visible est le miroir. Donne-lui un matériau avec le shader NodeWorld Example/Mirror.
- Sur le quad, Add Component, NodeWorld, FL# Script, puis Read the scripts et choisis
NodeWorldExample.PlanarMirror(ou le nom de classe que tu lui as donné). - Pose une Reflection Probe près du miroir : le shader l'affiche tant que le script ne fait pas le rendu.
Ses champs
| Champ | Ce qu'il fait |
|---|---|
maxDistance | Le reflet n'est rendu que tant que le joueur se tient devant le miroir, plus près que cette distance (8 m), et le regarde. Sinon, le miroir affiche la reflection probe et ne coûte rien. |
resolution | La largeur du reflet, en pixels (1024). Baisse-la pour un petit miroir ou pour le Quest. |
layers | Les couches que montre le reflet (toutes). |
showLocalPlayerHead | Le joueur y voit sa propre tête (activé). |
En VR, le script fait une image par œil : le reflet a de la profondeur.
Un miroir des joueurs seulement
Mets layers sur les deux couches des avatars des joueurs : 384, soit 1 << 7 (LocalPlayer, ton avatar) plus 1 << 8 (RemotePlayer, les autres). Le reflet ne montre alors que les avatars, sur le ciel (le clearFlags d'une nouvelle caméra) ; pour effacer avec une couleur à la place, règle clearFlags et backgroundColor sur la caméra du script (caméras). Voir les couches.
Ce qu'il coûte
Chaque miroir en vue refait le rendu de la scène, une fois par œil en VR. Garde peu de miroirs au même endroit, garde maxDistance courte, et baisse resolution sur Quest : le script peut lire World.isMobile (Quest).
Le script ne tourne que dans le jeu des joueurs ([ClientOnly]) : un miroir n'est jamais sur le serveur.
