HLSL โปร่งแสงพลาสติก Shader


12

ฉันพยายามที่จะสร้าง shader เพื่อทำซ้ำวัตถุพลาสติกสีขาวที่มีแสงสีอยู่ภายใน ไม่ว่าจะด้วย shader ที่จะโปร่งแสงและถ้าฉันใส่แสงเข้าไปในวัตถุแสงจะแสดงผ่านหรือโดยการมี shader ที่ทำให้เอฟเฟกต์ของแสงที่อยู่ภายใน

เอฟเฟกต์ที่กำลังจะเป็นเหมือนแสงที่ส่องผ่านโคมไฟคล้ายกับภาพเหล่านี้:

ข้อความแสดงแทน ข้อความแสดงแทน ข้อความแสดงแทน

เป็นการดีที่ฉันจะสามารถควบคุมความแข็งแรงและสีของแสงเพื่อให้ชีพจรและหมุนผ่านสี fluro สดใสดีบางอย่าง

แม้ว่าฉันจะไม่แน่ใจว่าจะเริ่ม!

คำถามของฉันคือใครรู้เทคนิคที่ฉันควรวิจัยเพื่อให้สามารถผลิต shader ดังกล่าวหรือมีตัวอย่างของ shader เดียวกัน / คล้ายกันที่ฉันสามารถใช้เป็นจุดเริ่มต้น? หรือแม้ว่าคุณต้องการให้ shader ที่อาจทำงานได้

คำตอบ:


10

นี่เป็นเอฟเฟกต์ที่รู้จักในชื่อ "Sub Sub Scattering"

มีตัวอย่างการใช้พื้นที่หน้าจอในหนังสือ "GPU Pro: Advanced Rendering Techniques" ที่เหมาะสำหรับการใช้งานแบบเรียลไทม์


0

ฉันไม่รู้ HLSL ดังนั้นฉันจึงไม่สามารถให้คำตอบที่แน่นอนได้ สิ่งที่คุณสามารถทำได้โดยพื้นฐานคือการตั้งค่าสีของแต่ละส่วนขึ้นอยู่กับระยะทางจากแหล่งแสง (ไม่สนใจเงาตัวเอง)

ใน pseudocode มันจะเป็นแบบนี้:

Fragment_color = light_intensity * transparent_color * lightsource_color / (การลดทอน * distance_to_lightsource ^ 2)

คุณอาจต้องการใช้ปัจจัยการลดทอนเชิงเส้นนอกเหนือจากกำลังสองเพื่อให้แสงกระจายออกไปมากขึ้น


0

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

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

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

เกี่ยวกับการโปรยดิน: ฉันไม่คิดว่านั่นคือสิ่งที่อยากอยู่ที่นี่เพราะทุกขั้นตอนวิธีการ SSS สำหรับกราฟิกที่ผมเคยเห็นถูกออกแบบมาสำหรับแสงที่มาจากนอกพื้นผิวการตีกลับรอบ bit และออกอีกครั้งในขณะที่นี่แสงภายใน .

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