IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Unity - Écrire votre premier shader

Anatomie d'un shader

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

 
Sélectionnez
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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2017 Unity Technologies. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.