J'ai construit un shader de surface de travail (appelé "wonderland") qui le rend invisible à moins qu'un compagnon "lookingGlass" le croise du point de vue de la caméra. Arrangement simple de shader de pochoir.HLSL (Ok spécifique à l'unité, pas nécessaire) combinant Stencil et le découpage "reverse" de l'espace monde
Peasy facile.
Je peux ajouter des paramètres de shader pour spécifier un plan, ou même juste une valeur minimale de l'espace Z, et utiliser clip() pour afficher uniquement les pixels d'un côté de ce plan ... (en d'autres termes, je pourrais utiliser ça Ce que je veux faire est d'utiliser le pochoir sur les surfaces "à travers le miroir", (pour révéler la géométrie qui est à l'intérieur du miroir) et de toujours rendre ces surfaces quand le pochoir est utilisé. ils sont sur "notre" côté du miroir (pour toujours les montrer s'ils sont de ce côté du portail en verre). Par exemple, si z < 0, s'affiche si la valeur Stencil Ref est satisfaite. si z> = 0, restitue indifféremment. Maintenant, dans Unity I peut pouvez joindre deux matériaux au composant MeshRenderer (un avec un shader shader, un avec un shader "cutoff") - cela fonctionne bien. C'est vraiment génial, en fait, au moins visuellement. Mais même si je ne l'ai pas encore évalué, je crois instinctivement que cela va avoir un impact massif sur le framerate s'il y a un certain nombre d'objets, une géométrie assez compliquée, etc., mis en place avec cet arrangement.
(Je peux aussi gérer la fixation des shaders dans le code, et ne le faire quand j'attends quelque chose à la transition, mais je suis vraiment l'espoir d'obtenir un shader unifié de ce pour éviter les appels inutiles de tirage.)