HaloCE Modding [Spanish Forum]

Bienvenido al sitio Halo Modding español. Publica tus trabajos aquí, pregunta o ayuda resolviendo topics/temas.
 

 

 Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
MrChromed

avatar

Miembro Nivel 1
Miembro Nivel 1


Mensajes : 7
Likes : 8
Fecha de inscripción : 25/07/2016
Localización : Chile

MensajeTema: Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?   Jue Ago 11, 2016 12:28 pm

¡Hola a todos! Soy MrChromed (miembro de ShadowMods, un equipo encargado del desarrollo de contenido para Halo CE). Mi especialidad es el entorno gráfico/visual de los diveros proyectos en los que trabajo, y en este primer post que publico me encargaré de hacer un tutorial de lo que trata un tipo de tag que, desde mi punto de vista, es FUNDAMENTAL al momento de querer editar o crear mapas con una calidad visual acorde a lo que merece el juego, y este no es nada más ni nada menos que: shader_enviroment. ¡Comencemos!

¿Qué es?


Shader_enviroment es el tipo de shader (tag) principal usado en BSPs que se compongan de materiales opacos. Algunos ejemplos de materiales opacos son:

- Nieve.
- Tierra.
- Metales.
- Colinas.

Generalmente, este tipo de shader nunca es usado en otros tipos de tags contenedores como GBXModels, debido a que las propiedades fundamentales del shader son inhabilitadas en GBXModels, tales como bump maps y speculars. Algunas funciones de este shader se asimilan a su par en modelos: shader_model, como el hecho de poder usar distintos tipos de detalles.

NOTA: Los shader_enviroments sólo lucirán excelentes de acuerdo a qué tan buenos son los bitmaps usados en ellos. Cualquier shader puede lucir lo suficientemente bueno si se le dedica esfuerzo y mucho tiempo para lograr un acabado satisfactorio. Puedes re-revisar y actualizar los shaders en los que trabajes tanto como desees mientras perfeccionas tus técnicas y gustos. Lo digo por experiencia propia.

Propiedades del tag

Radiosity properties

Estos ajustes controlan cuánta luz es recibida y dada por una superficie durante el proceso de creación de lightmaps o "radiosity" del BSP.

- "Simple parameterization": se usa para corregir un extraño bug del motor en el que los UVs de un lightmap son hechos con ciertos errores (suele ocurrir con sectores superficiales que cubren grandes áreas de un mapa).

- "Detail Level": determina la resolución de un lightmap. Altos niveles de detalle permiten lightmaps de calidad, pero el proceso de creación de lightmaps tomará mucho más tiempo (la calidad "Turd" sólo debe ser usada si realmente no te importa la calidad en ese sector, o si éste simplemente no merece mayor relevancia en el mapa y es mejor que sea usado con esa calidad para ahorrar espacio y tiempo).

- "Tint color": es usado para re-pintar un sector determinado en el que el lightmap atravesará el material. Ejemplos clásicos son vallas metálicas o rejillas (tendrá un efecto similar al de una luz atravesando vidrio manchado). Cualquier cambio requiere volver a correr radiosity para que tomen efecto.

Physics properties

Este parámetro determina qué efecto se usará al interactuar la superficie del material al caminar, conducir o disparar en éste. Ejemplos clásicos son las partículas de chispas o de nieve salpicada al interactuar con materiales metálicos o nevados, respectivamente.

Enviroment shader

Aquí hay diversas opciones para configurar:

- "Alpha tested": permite el usar un canal alfa (alpha channel) en un bump map para determinar transparencia donde corresponda. Ejemplos de ellos son rejas metálicas o vallas.

- "True Atmospheric Fog": Es una opción un tanto redundante o poco útil "en caso de" que el shader sea usado en un GBXModel y así corregir un problema con el fog que lo atraviesa. Pero como sabemos, un shader_enviroment NO DEBE ser usado en un GBXModel. Para eso están los shader_model.

Enviroment shader type

Los diversos tipos que existen alteran el método normal de cálculo y función un specular map (ya que, por lo general, es simplemente el canal alfa en la textura base o principal)

- "Blended": permite la especularidad en una textura entremezclada. Un ejemplo de ello es combinar tierra o pasto en una superficie metálica, o mezclar pasto/tierra en un suelo (como en Bloodgulch, donde el canal alpha hará un degradado de los diversos detalles puestos a medida que las zonas del canal sean blancas, grises o negras).

- "Blended Base Specular": es una función redundante por ser muy similar a la anterior, aunque a veces puede ser utilizada para mejorar la apariencia de lugares metálicos. Al igual que en "Blended", este hace uso del canal alfa de la textura base para mezclar detalles y degradarlos a medida que hayan zonas blancas, grises o negras en el canal.

Lens Flares

Sólo es necesario saber una cosa sobre este apartado y es que la ubicación de cada lens flare es calculado cuando la estructura del BSP es creada. Cualquier cambio en este sector (como el radio de la luz generada) requerirá la re-compilación total del BSP (en caso de que estés creando un mapa o maniupando un BSP existente en algún programa 3D y compilas el .jms)

Diffuse properties

Esta sección está diseñada para poder configurar cada detail map. Como algunos saben, existen 3 tipos de details maps: Primary, Secondary y Micro. Los tres son usados al mismo tiempo en lugares como colinas o suelos naturales y permiten ver al jugador diversos niveles de detalle a medida que se acerca o alejas de un lugar. Cuando el tipo de shader está configurado en modo "Blender", cada detail ocupará un lugar específico. Siempre es recomendable usar details de colores grises cuando la textura base ya posee colores establecidos, aunque eso es tema de cada quien.

- Primary detail map abarcará todas las zonas de la textura base que tengan un canal alfa blanco.
- Secondary detail map abarcará todas las zonas de la textura base que tengan un canal alfa negro.
- Micro detail abarca toda la zona de la textura base, sin considerar canales alfa. Osea, encima de los otros 2 anteriores.
- Las zonas grises del canal alfa de la textura base se usarán para unir tanto al primary como al secondary detail map (un efecto de degradado).
- Las escalas (scales) de cada uno definen cuántas veces se podrá repetir la textura en todo el sector que corresponda. Valores altos pueden proporcionar una textura más pequeña de ver y por ende, con una mejor sensación de vista, pero un valor exagerado puede producir que las texturas se vean muy repetitivas (efecto mosaico), y si la textura no es la adecuada, el resultado puede ser aún más dramático.

Para comprender mejor este apartado, usaremos de ejemplo la configuración del shader_enviroment "blood ground", el shader encargado del suelo natural de Blood Gulch (tags\levels\test\bloodgulch\shaders):

Base Map (diffuse)



Base Map (Canal Alfa/Alpha Channel)



Primary detail map (detail sand). Este se encargará de estar en los sectores blancos del canal alfa de la textura base.



Secondary detail map (detail grass). Este se encargará de estar en los sectores negros del canal alfa de la textura base.



Micro detail map (detail ground). Este se encontrará encima de los 2 details anteriores, por no tomar en cuenta el canal alfa de la textura base. Lamentablemente, en Blood Gulch no es muy fácil verlo a simple vista, pero en otros mapas se puede hacer notar con más facilidad.


Bump properties

Los Bump maps (conocidos también como Normal Maps) son texturas encargadas de crear la ilusión de profundidad cuando un objeto que lo contenga es iluminado. Un specular map puede ayudar a resaltar el bump map sin necesidad de ser iluminado. Lamentablemente, Gearbox Software, al realizar el port de Halo para PC, redujeron considerablemente la sensación original del bump map y su eficacia (Gearbox, como siempre, cagándola).

- "Bump map scale": prácticamente cumple la misma función los scales, explicado anteriormente.

Texture Scrolling animation

Para zonas como cascadas, correas, escaleras mecánicas, este sector se encarga de crear movimiento en la textura entera con una velocidad y tipo de movimiento determinado en la configuración. Personalmente, muuuuy raras veces he usado este sector, por lo que no me abarcaré aquí. Si deseas probar cosas, experimenta.

Self-Illuminarion properties

Algunos sectores específicos de la textura base pueden ser elegidos para que el proceso de radiosity los ignore y que dichos sectores tengan la propiedad de brillar en la oscuridad. Existen 3 canales para poder crear diferentes efectos de iluminación y duración de estas (Primary, Secondary y Plasma) y que funcionan en base a un glow map (o llamado también como illum map). Un ejemplo clásico son las luces que se encuentran en paneles metálicos de "The Silent Cartographer" o en los interiores de las bases de "Death Island". Para esto, se necesita que el glow map tenga un color rosado (R = 255, G= 0, B = 255) y que su canal alfa tenga un degradado en escala de grises. Para ejemplificarlo, usaré unas texturas personalizadas de glow map:

Glow Map (diffuse).



Glow Map (canal alfa/alpha channel). Como se aprecia, usa un degradado en escala de grises.


Experimenta por tí mismo para poder entender de mejor forma esta función, o básate en el shader "metal panel generator" (tags\levels\b30\shaders).

Specular properties

La "especularidad" (specularity) de una textura base (por el specular map) define qué tan brillante o "húmedo" puede lucir un material. Este efecto se exagera gracias al uso del bump map. Básicamente, existen 2 formas de ver este efecto: mirando directamente al material de frente (perpendicular) o mirándolo desde una vista lateral (parallel). Combinadas, ambas logran una ilusión magnífica. Los colores que se elijan para cada tipo de ángulo deben ser similares en intensidad o que puedan complementarse. Cuánto mayor sea el contraste en cada parámetro, mayor será el efecto de "brillo húmedo". Las opciones de "overbirght" y "extra-shiny" pueden ser de cierta utilidad para superficies metálicas, pero para ello hay que tener un specular map bien diseñado. speculars maps muy brillantes o mal hechos pueden ocasionar que la superficie luzca como plástico (similar a las superficies metálicas Forerunner en Halo 4 y 5). Desconozco la función de "lightmap is specular", puesto que jamás he visto cambios aparentes cuando lo he probado/habilitado.

Reflection properties

Este sector permite la configuración de las intensidades de reflección (por medio de un cubemap). La opción de "dynamic mirror" hace que el material en cuestión posea reflecciones en tiempo real. La superficie debe, en ese caso, ser 100% plana (sin imperfección alguna) y no debe chocar o enfrentar otras superficies con la misma opción (ya que crearía una reflección infinita, algo que el motor de Halo, Blam! Engine, no puede manejar).


Ejemplo de dynamic mirror (Two Betrayals):

Type: existen 3 tipos de reflección (flat cube-map, bumped cube-map, bumped radiosity).

- "Flat cube-map": Este tipo hace que el cubemap ignore la existencia de algún bump map puesto en el shader y se mostrará de forma más "lisa" y plana en la reflección.

- "Bumped cube-map": Este tipo hace que el cubemap se refleccione de acuerdo a las protuberancias o detalles existentes en el bump map.

- "Bumped radiosity": Sinceramente, no he usado jamás esa opción, por lo que lamentablemente no puedo describirla. Por lo que deduzco, sólo tomará efecto si vuelven a compilar lightmaps (correr el comando radiosity). Prueben por sí mismos.

Luego de eso, existen otros tipos de brillos, los cuales se relacionan en parte con la sección de "Specular properties" antes detallada. Aquí sólo entran temas de gustos y experimentación. Recuerda: una buena configuración de brillos, más un buen cubemap, te aseguran un acabado satisfactorio, pero todo se trata de paciencia y mucho tiempo.

Y así es como termina este tutorial. Espero que pueda servir de base de apoyo para futuras personas que se interesen en el apartado visual/gráfico como yo, porque créanme que a pesar de contar con un motor de hace 18 años (el motor como tal existe desde 1998), se le puede exprimir mucho y sacar la mayor ventaja posible. Mucha suerte a todos y ya volveré prontamente con algún otro tutorial relacionado al área. Pueden visitar la página de Facebook "ShadowMods" para poder ver imágenes de lo que hago, más otros proyectos junto con el resto de mi equipo. ¡Saludos! Very Happy
Volver arriba Ir abajo
Ver perfil de usuario
Pepe Enriquez

avatar

Miembro Nivel 2
Miembro Nivel 2


Mensajes : 16
Likes : 0
Fecha de inscripción : 05/07/2016
Localización : Mexico

MensajeTema: Re: Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?   Vie Ago 12, 2016 1:47 am

Muchas gracias por tu aporte, me intereso mucho lo de reflection dynamic mirror (Two Betrayals), crees que se pueda poner en los scenery forge?


Volver arriba Ir abajo
Ver perfil de usuario
MrChromed

avatar

Miembro Nivel 1
Miembro Nivel 1


Mensajes : 7
Likes : 8
Fecha de inscripción : 25/07/2016
Localización : Chile

MensajeTema: Re: Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?   Vie Ago 12, 2016 4:37 pm

Lamentablemente no, Pepe. Como dije en el tutorial, cualquier objeto que haga uso de gbxmodels jamás podrá usar propiedades exclusivas de un shader_enviroment, tales como bump maps y dynamic mirrors. Y aún si el mapa ya no fuese de scenerys si no de BSP, seguiría sin poderse del todo, ya que las superficies deben ser planas totalmente y no deben contener superficies perpendiculares (como rampas).
Volver arriba Ir abajo
Ver perfil de usuario
Pepe Enriquez

avatar

Miembro Nivel 2
Miembro Nivel 2


Mensajes : 16
Likes : 0
Fecha de inscripción : 05/07/2016
Localización : Mexico

MensajeTema: Re: Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?   Vie Ago 12, 2016 7:43 pm

Muchas gracias y entendido!
Volver arriba Ir abajo
Ver perfil de usuario
Contenido patrocinado






MensajeTema: Re: Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?   

Volver arriba Ir abajo
 
Shader Enviroment - ¿Qué es? ¿Cómo funciona? ¿Por qué es fundamental?
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

Permisos de este foro:No puedes responder a temas en este foro.
HaloCE Modding [Spanish Forum] :: Halo 1 :: Discusión General Mapping/Modding :: Ayuda Modding-
Cambiar a: