Los Shaders en Unity pueden ser escritos en una de tres diferentes maneras:
Los Surface Shaders son su mejor opción si su sombreador(shader) necesitar se afectado por luces y sombras. Los sombreadores(shaders) de superficies hacen que sea fácil de escribir sombreadores complejos en una forma compacta - es un nivel mayor de abstracción para la interacción del canalizado(pipeline) de iluminación de Unity. La mayoría de los sombreadores de superficies automáticamente soportan ambos forward y deferred lighting. Usted escribe los sombreadores de superficie en un par de lineas de Cg/HLSL y un montón más de código es auto-generado a partir de eso.
No use Surface Shaders si su Shader no está haciendo nada con las luces. Para efectos de post-procesamientp o muchos shades de efectos especiales, los surface shaders son una opción subóptima, ya que hacen un montón de cálculos de iluminación sin ningún motivo.
Los sombreadores Vertex y Fragment van a ser requeridos, si su sombreador no necesita interactuar con la iluminación, o si usted necesita algunos efectos muy exóticos que el sombreador de superficie no puede manejar. Los programas de sombreado escritos de esta manera son la forma más flexible de crear el efecto que usted necesita (incluso los sombreadores de superficie se convierten automáticamente a un grupo de sombreadores vertex y fragment), pero eso llega con un precio: usted tiene que escribir más código y es más díficl hacerlo interactuar con la iluminación. Estos sombreados están escrito en Cg/HLSL también.
Los Sombreadores con Funciones Fijas necesitan ser escritos para hardware viejo que no soporta sombreadores programables. Usted probablemente querrá escribir sombreadores con funciones fijas como un n-th fallback para su fragmento de lujo o sombreador de superficies, para asegurarse que su juego todavía renderice algo sensible cuando corra en un hardware viejo o en plataformas móviles simples. Los sombreadores con funciones fijas son enteramente escritos en un lenguaje llamado ShaderLab, que es similar al de los archivos .FX de Microsoft o CgFX de NVIDIA.
Sin importar qué tipo escoja usted, el código siempre será envuelto en un ShaderLab, que es usado para organizar la estructura del sombreador. Se ve así:
Shader "MyShader" {
Properties {
_MyTexture ("My Texture", 2D) = "white" { }
// Place other properties like colors or vectors here as well
}
SubShader {
// here goes your
// - Surface Shader or
// - Vertex and Fragment Shader or
// - Fixed Function Shader
}
SubShader {
// Place a simpler "fallback" version of the SubShader above
// that can run on older graphics cards here
}
}
Nosotros recomendamos que usted empiece leyendo acerca de algunos conceptos básicos del sintaxis del ShaderLab en ShaderLab reference y luego seguir a los tutoriales listados abajo.
The tutorials include plenty of examples for the different types of Shaders. Unity’s post-processing effects allows you to create many interesting effects with shaders.
Lea para una introducción a los sombreadores, y revise shader reference!