I. Introduction▲
Cette série explique comment programmer ses propres effets visuels grâce aux shaders.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - Écrire votre premier shader
III. Résumé▲
Par défaut, le contenu du « Unlit Shader » est le suivant :
Shader "Unlit/Hologram"
{
Properties
{
_MainTex (
"Texture"
, 2D
) =
"white"
{}
}
SubShader
{
Tags {
"RenderType"
=
"Opaque"
}
LOD 100
Pass
{
CGPROGRAM
#
pragma
vertex vert
#
pragma
fragment frag
// make fog work
#
include
"UnityCG.cginc"
struct appdata
{
float4
vertex : POSITION
;
float2
uv : TEXCOORD0
;
}
;
struct v2f
{
float2
uv : TEXCOORD0
;
UNITY_FOG_COORDS
(
1
)
float4
vertex : SV_POSITION;
}
;
sampler2D _MainTex;
float4
_MainTex_ST;
v2f vert (
appdata v)
{
v2f o;
o.vertex =
UnityObjectToClipPos
(
v.vertex);
o.uv =
TRANSFORM_TEX
(
v.uv, _MainTex);
UNITY_TRANSFER_FOG
(
o,o.vertex);
return
o;
}
fixed4 frag (
v2f i) : SV_Target
{
// sample the texture
fixed4 col =
tex2D
(
_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG
(
i.fogCoord, col);
return
col;
}
ENDCG
}
}
}
La première ligne spécifie où, dans le menu, le shader va apparaître lorsque vous allez l'assigner à un Material.
Le langage utilisé pour écrire un shader s'appelle ShaderLab.
Le premier bloc décrit les propriétés. Elles sont publiques et visibles dans Unity (dans le composant Material). Le second bloc, « SubShader » contient le code du shader ainsi que des informations spécifiques au rendu.
Il est possible d'avoir plusieurs blocs « SubShader » par shader. Vous pouvez ainsi créer des shaders spécifiques pour telle ou telle plateforme.
La structure « appdata » décrit les données reçues de l'application par la carte graphique. De même, « v2f » décrit les données transférées entre le vertex shader et le fragment shader. Les étapes des vertex shader et fragment shader sont définies dans les fonctions vert et frag.
Le vertex shader va manipuler les sommets du modèle à afficher. Le fragment shader définit la couleur finale des pixels, là où le modèle sera dessiné.
IV. Ressources▲
Vous pouvez télécharger les ressources pour ce projet ici.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.