es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puedo lograr esto con Ztest o Stencil Shaders?

Soy bastante nuevo con shaders, pero quería preguntar si esa idea mía es posible de lograr a través de shaders o no.

Estoy haciendo un vestidor para dispositivos móviles. Me encuentro con problemas cuando combino, por ejemplo, una blusa/camisa con una chaqueta, y la blusa es más grande, por lo que atraviesa la chaqueta. Sé que quizás usando el elemento de tela podría resolver eso, pero consume mucha CPU y estoy tratando de evitar usarlo.

Creé esta abstracción para hacer algunas pruebas. 2 mallas que representan una blusa (roja) y una chaqueta abierta. No puedo alternar la visibilidad porque en algunos casos, como este, la chaqueta puede estar abierta, por lo que necesitas ver lo que está debajo.

Aquí está lo que quería lograr:

<<<
descripción de la imagen

Jugué un poco con la prueba Z, pero no pude conseguir lo que quería…

<<<
descripción de la imagen

También hice algunas pruebas con stencil, pero creo que no sé cómo usarlo correctamente.

<<<
descripción de la imagen

¿Tienen alguna idea de cómo solucionar eso con un shader? ¿Creen que tal vez la cola de renderizado podría ayudar?

Gracias por su tiempo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en unity3d con conocimientos de shaders, diría que es posible lograr el efecto deseado a través de shaders. Una forma de solucionar el problema de que un objeto atraviese otro es utilizar un shader que permita la prueba de profundidad. En el caso de la intersección entre la blusa y el blazer, la funcionalidad de prueba de profundidad determinará qué objeto está más cerca de la cámara y solo renderizará ese objeto, ocultando efectivamente el objeto que se intersecta.

    Otro enfoque es utilizar el búfer de estarcido, que permite un control más detallado sobre cómo se renderizan los objetos. El búfer de estarcido se puede utilizar para enmascarar ciertas partes del objeto y solo renderizar las partes que no se superponen.

    Las colas de renderizado también pueden ser útiles para solucionar este problema, ya que permiten la priorización de ciertos objetos sobre otros. Esto puede asegurar que, en los casos en que un blazer deba renderizarse sobre una blusa, siempre se renderice en la parte superior.

    En general, existen múltiples opciones disponibles para resolver este problema a través de shaders, y dependerá del caso de uso específico y los requisitos para determinar cuál enfoque sería el más adecuado.

Comments are closed.