本文轉自公眾號:十二只熊
光路表達式(Lighting Path Expression)
渲染器會從相機中逐像素地發射采樣射線,這些射線路徑在行進過程中會與場景中的對象(如體積、曲面表面)產生一系列的交互事件,最終采樣到光源,從而為像素提供光照結果。
而光路表達式(LPE)就是用于構建調取這些事件并決定返回到像素結果的過濾條件。
LPE是一種正則表達式,聲明規范基于OSL光路表達式語言(參考網頁:
https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/wiki/OSL-Light-Path-Expressions)。
事件類型
LPE表達式常用的標識符和對應的事件類型如下:
常規類型
C- 相機(Camera),表示相機發出射線,所以該字符一般是頭前聲明的基本字符。
L- 光源(Lighting),表示采樣射線采樣到光源的事件,是射線的最終目的地,所以一般聲明在最后,用于采集光照,以及光的形狀(如面光源)。
R- 表面反射(Surface Reflection)
T- 表面透射(Surface Transmission)
V- 體積(Volume)
O- 自發光物體(Emissive Object)
A- 反照率(Albedo)
散射類型
D- 漫反射(Diffuse scatter)
G- 鏡面反射(Glossy scatter)
編寫規范
語法
LPE表達式的內容,是一系列篩選條件的組合,所以其結果是符合表達式中所有聲明條件的采樣結果。
具體結構如下:
event_type scatter_type['tag'['bsdf_label']]
比如,按前面列出的事件類型可知,CR返回的是所有反射,包括漫反射、二次反射以及鏡面反射;而CGR則僅返回鏡面反射的二次反射。
通配符
.(單個點 )
匹配一次任意事件。即所有事件類型,但僅匹配一次,對應事件的后續反彈次數不再匹配。實際上返回的是所有采樣類型的初次撞擊。
比如C.L表示,每條采樣射線遇到一次事件即返回結果,不再采樣下一次的交互,所以這種渲染結果中,原本的透明折射效果會被丟棄。
*(星號)
匹配任意數量(包括0個)的前一項事件。比如表達式D*返回的是射線所遇到的所有漫反射事件,也就是射線因連續漫反射而多次反彈期間的所有漫反射結果。
+(加號)
匹配任意數量(不包括0個)的某類事件。
Grouping
小括號用于將某些事件類型打組為單個標簽。內部標簽之間的關系相當于and,并列條件,缺一不可,如 則表示該標簽用于過濾漫反射的反射。
方括號內部可以定義一系列的可選標簽。內部標簽之間的關系相當于or,異或條件,返回所有匹配到的事件。
[^排除項]
方括號內聲明的^前綴用于聲明排除標簽,如[^DG],相當于not D or G,排除后跟多項中的任意一項。
BSDF采樣
BSDF采樣數據的獲取方式類似于自定義標簽,但有所不同——BSDF不屬于事件類型,所以需要在<>內部聲明,如:
C<...'coat'>.*LC<...'sss'>.*L
其中...表示忽略對應的事件類型的散射類型,直接獲取任意類型下的'coat'。
須注意,在Karma渲染設置節點中,默認只有coat和sss帶有BSDF標簽,且二者僅在CPU渲染模式下有效。
過濾特定對象的BSDF語法如下:
['tag'['bsdf_label']]
特殊符號
lpe:unoccluded; || unoccluded;
該語句用于聲明無陰影采樣,一般放在表達式開始。
自定義標簽
參與渲染的對象(場景物體或燈光)都可以提前設置對應的LPE標簽名。
在渲染時,則可以通過LPE直接調取特定的對象標簽,過濾掉其它對象。
比如當要單獨提取某一面墻的間接反射層,則可以為該墻面幾何對象設置LPE標簽(如leftwall),從而在LPE中提取:
C[GD]+'leftwall'L
此外,通過使用Properties VOP
節點,也可以為材質添加LEP標簽。
燈光標簽
燈光標簽的提取在L后聲明,如下:
C.* 'apple' >
該表達式具體含義如下:
相機事件 && 所有事件類型的所有次數 && 光源事件 &&
<所有光源 + 名為apple的光源>
· 全文完 ·
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.