Tengo un piso hexagonal infinito, generado al teselar una cuadrícula de puntos en un par de sombreadores de teselación:
Tenga en cuenta que esta es una estructura metálica plana: las "sombras" son un truco de iluminación:
Ahora, me gustaría hacer que esto parezca vidrio grueso y refractivo, pero no estoy seguro de cómo proceder.
Lo primero que me vino a la mente es
- establecer un uniforme que contenga el "grosor" solicitado de los bloques
- Al calcular la iluminación, use la ley de Snell para calcular la longitud del camino óptico que tomaría un rayo a través del bloque hexagonal, si en realidad fuera tan grueso como dice el uniforme de "espesor", y sume el alfa sobre esa longitud. Eso le daría transparencia, pero no maneja cosas como la reflexión interna / TIR, etc.
Todavía no lo he intentado, así que no estoy seguro de cuál sería el resultado visual.
En última instancia, para este nivel en particular, estoy tratando de usar ese aspecto de vidrio y piso hexagonal en Tron: Legacy durante la batalla de discos. ( Vea esta imagen para ver un ejemplo ).
Sugerencias?
Respuestas:
Este artículo en GPU Gems profundiza sobre la refracción, que puede dar resultados bastante agradables
En el sentido más básico
La siguiente lista muestra un sombreador que demuestra este enfoque
Las siguientes imágenes ilustran estos tres pasos.
Hay técnicas más avanzadas en el mismo artículo que pueden lograr una apariencia mucho más atractiva.
Para un efecto similar en Unity, es posible que desee echar un vistazo a la página wiki de The Refraction Shader
fuente
Tomaré la imagen que mostraste como referencia de cómo imagino el efecto. El algoritmo que se me ocurre es simple:
En cuanto al sombreador de refracción, para simular el vidrio que puede hacer
Solo pensé en la idea, así que no la probé. Estoy seguro de que necesita más trabajo, tal vez lo haga una vez que regrese del trabajo.
fuente