แรเงาหรือแสงสว่างคืออะไร?


14

การแรเงาหรือแสงคืออะไร มันแตกต่างจากตูนแรเงาหรือเป็นแนวคิดเดียวกันหรือไม่ specularity ถูกคำนวณแตกต่างกันอย่างไรสำหรับการแรเงาบนทางลาดเทียบกับ blinn-phong หรือ lambert

คำตอบ:


21

ในการแรเงาแบบ Blinn / Phong แบบดั้งเดิมคุณคำนวณคำที่กระจายสำหรับพิกเซลโดยการวัดค่ามุมโคไซน์ระหว่างค่าปกติที่พื้นผิวและทิศทางของแสง ดังนั้นในกรณีนี้ shader ง่าย ๆ จะมีลักษณะดังนี้:

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

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

ในการแรเงาทางลาดความคิดคือการปรับค่าสัมประสิทธิ์การกระจายโดยพื้นผิวการค้นหา 1D คุณสามารถสร้างเอฟเฟกต์ต่าง ๆ ได้ขึ้นอยู่กับสิ่งที่คุณใส่ในพื้นผิวนี้ ดังนั้นฟังก์ชัน shader ของเราในการคำนวณสัมประสิทธิ์การกระจายกลายเป็น:

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

ตัวอย่างเช่นถ้าเราต้องการที่จะใช้เซลล์ shader สิ่งที่เราสามารถทำได้คือการสร้างพื้นผิวลาดที่เลียนแบบฟังก์ชั่นขั้นตอน:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถใช้แนวคิดเดียวกันนี้ในการสร้างเอฟเฟกต์ต่าง ๆ สำหรับแสงแบบ specular เช่นกัน การแรเงา "Ramp" หมายถึงความคิดในการปรับค่าการแรเงาด้วยพื้นผิวเท่านั้น

แก้ไข : Team Fortress 2 ใช้ rader shader ในการเรนเดอร์ คุณสามารถตรวจสอบรายละเอียดในเอกสารนี้:

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

ดูภายใต้ส่วนที่ 5 ที่ส่วนย่อยที่ชื่อว่า "ฟังก์ชั่นการแปรปรวนแบบกระจาย"


1
คำตอบที่ดี! คำอธิบายของความแตกต่างของแสงระหว่างการกระจายแสงและทางลาดคือสิ่งที่ฉันกำลังมองหา ฉันยังชื่นชมความคิดเห็นเกี่ยวกับแนวคิดของการแรเงาแบบทั่วไป นอกเหนือจากนั้นคุณสามารถโพสต์ภาพตัวอย่างจากเกมที่ใช้แนวคิดนี้ได้หรือไม่?
StampyTurtle

@Stampyturtle ฉันได้อัปเดตคำตอบของฉันด้วยตัวอย่าง
Mokosha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.