Qu'est-ce que l'ombrage ou l'éclairage de rampe?

14

Qu'est-ce que l'ombrage ou l'éclairage des rampes et comment cela fonctionne-t-il? Est-ce différent de toon shading ou est-ce le même concept? Comment la spécularité est-elle calculée différemment pour l'ombrage de rampe par rapport à blinn-phong ou lambert?

StampyTurtle
la source

Réponses:

21

Dans l'ombrage Blinn / Phong traditionnel, vous calculez le terme diffus pour un pixel en mesurant le cosinus de l'angle entre la normale à la surface et la direction de la lumière. Donc, dans ce cas, un simple shader ressemblerait à ceci:

float DiffuseCoeff(in float3 pos, in float3 normal, in float3 lightPos) {
    float3 lightDir = lightPos - pos;
    lightDir.normalize();

    return max(0.0, Dot(lightDir, normal));
}

En ombrage de rampe, l'idée est de moduler le coefficient diffus par une texture de recherche 1D. Selon ce que vous mettez dans cette texture, vous pouvez générer différents effets. Par conséquent, notre fonction de shader pour calculer le coefficient diffus devient:

texture1D rampTex;
float DiffuseCoeff(in float3 pos, in float3 normal, in float3 lightPos) {
    float3 lightDir = lightPos - pos;
    lightDir.normalize();

    // Map value from [-1, 1] to [0, 1]
    float rampCoord = Dot(lightDir, normal) * 0.5 + 0.5;
    return tex1D(rampTex, rampCoord);
}

Par exemple, si nous voulions implémenter un shader de cellule, nous pourrions générer une texture de rampe qui émule une fonction de pas:

entrez la description de l'image ici

Vous pouvez également utiliser la même idée pour générer différents effets pour l'éclairage spéculaire. L'ombrage "rampe" fait référence uniquement à l'idée de moduler une valeur d'ombrage par une texture.

EDIT : Team Fortress 2 utilise un shader de rampe dans leur rendu. Vous pouvez consulter les détails dans cet article:

http://www.valvesoftware.com/publications/2007/NPAR07_IllustrativeRenderingInTeamFortress2.pdf

Regardez sous la section 5, la sous-section intitulée "Fonction de distorsion diffuse"

Mokosha
la source
1
Très bonne réponse! L'explication de la différence d'éclairage entre l'éclairage diffus et l'éclairage en rampe est exactement ce que je cherchais. J'apprécie également le commentaire sur le concept d'ombrage de rampe en général. En plus, pourriez-vous éventuellement publier un exemple d'image d'un jeu qui utilise ce concept?
StampyTurtle
@Stampyturtle J'ai mis à jour ma réponse avec un exemple.
Mokosha