พิจารณาแสงที่เลื่อนออกไป สั้นแสงรอการตัดบัญชีเป็นเทคนิคที่ใช้รุ่นที่ลดลงของการแรเงารอการตัดบัญชีในการคำนวณ Lightmap พื้นที่หน้าจอ ในรอบที่สองเรขาคณิตจะถูกสร้างการแสดงผลอีกครั้งโดยใช้ lightmap ของหน้าจอเป็นข้อมูลแสง
เทคนิคนี้ใช้เพื่อลดขนาดของ G-Buffer เนื่องจากต้องการคุณลักษณะน้อยลง นอกจากนี้ยังซื้อข้อดีให้คุณซึ่ง G-Buffer และ lightmap ของพื้นที่หน้าจออาจมีความละเอียดต่ำกว่าหน้าจอ
ฉันใช้ตัวแสดงผลที่อิงตาม GLES 2.0 อย่างเข้มงวด (แม้ว่าจะเป็นรุ่นทดลอง) และฉันจัดการต้ม G-Buffer ลงไปที่พื้นผิว RGBA หนึ่งอัน (ใช่ฉันใช้ texture2D แทนที่จะเป็น renderbuffer) มันบรรจุแผนที่ปกติของพื้นที่หน้าจอ + บัฟเฟอร์ความลึกในช่องอัลฟา (ซึ่งถูกบีบอัดโดยใช้ลอการิทึมเท่าที่ฉันจำได้)
คุณลักษณะตำแหน่ง (เรียกว่าโลกที่นี่) สามารถคำนวณได้ในระหว่างการส่องผ่านแสงโดยใช้ความจริงซึ่งในมุมมองของปริพันธ์นั้น. xiถูกเบี่ยงเบนโดย. zดังนั้น:
x yฉR U s T U เมตร= x yw o r l d/ zw o r l d
ฉันประมาณค่าตำแหน่งของxyโดยทำ:
x yw o r l d= x yฉR U s T U เมตร∗ zWo r l d
หมายเหตุ: ฉันต้องทำการปรับเปลี่ยนเพิ่มเติมตามการตั้งค่าเมทริกซ์การฉาย
นอกจากนี้ยังมีข้อสังเกตว่าฉันสามารถตัดส่วนประกอบ. zของเวกเตอร์ปกติได้เนื่องจากฉันสามารถสร้าง. zจาก . xy ได้อีกครั้งเนื่องจากเวกเตอร์ปกติถูกทำให้เป็นมาตรฐานเพื่อให้:
x2+ y2+ z2----------√= 1x2+ y2+ z2= 1Z2= 1 - ( x2+ y2)Z= 1 - ( x2+ y2)-----------√
การใช้เทคนิคนี้ฉันสามารถเพิ่มช่องสัญญาณอื่นใน RGBA G-Buffer ของฉันและใช้วิธีนี้เพื่อจัดเก็บพื้นที่หน้าจอ specular-map (หรือความมันวาวถ้าคุณต้องการ)