Apa itu Ramp Shading atau Pencahayaan?


14

Apa itu shading ramp atau pencahayaan dan bagaimana cara kerjanya? Apakah berbeda dari toon shading atau apakah konsepnya sama? Bagaimana specularity dihitung secara berbeda untuk ramp shading versus blinn-phong atau lambert?

Jawaban:


21

Dalam naungan Blinn / Phong tradisional, Anda menghitung istilah difus untuk piksel dengan mengukur kosinus sudut antara normal di permukaan dan arah cahaya. Jadi, dalam hal ini, shader sederhana akan terlihat seperti ini:

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

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

Dalam ramp shading, idenya adalah memodulasi koefisien difus dengan tekstur pencarian 1D. Bergantung pada apa yang Anda masukkan ke dalam tekstur ini, Anda dapat menghasilkan efek yang berbeda. Karenanya, fungsi shader kami untuk menghitung koefisien difus menjadi:

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);
}

Misalnya, jika kita ingin menerapkan shader sel, yang bisa kita lakukan adalah menghasilkan tekstur ramp yang mengemulasi fungsi langkah:

masukkan deskripsi gambar di sini

Anda dapat menggunakan ide yang sama untuk menghasilkan efek berbeda untuk pencahayaan specular juga. Naungan "Ramp" benar-benar hanya merujuk pada gagasan memodulasi nilai warna oleh tekstur.

EDIT : Team Fortress 2 menggunakan ramp shader dalam rendering mereka. Anda dapat melihat detail di makalah ini:

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

Lihat di Bagian 5, di subbagian yang berjudul "Fungsi Waring Difus"


1
Jawaban bagus! Penjelasan tentang perbedaan pencahayaan antara pencahayaan difus dan ramp persis apa yang saya cari. Saya juga menghargai komentar tentang apa konsep ramp shading secara umum. Sebagai tambahan, bisakah Anda memposting contoh gambar dari game yang menggunakan konsep ini?
StampyTurtle

@Stampyturtle Saya telah memperbarui jawaban saya dengan sebuah contoh.
Mokosha
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.