從零開始用C++編寫光線追蹤器,無AI依賴
一位開發者釋出了Luz,一個完全從零開始編寫的C++20路徑追蹤器,沒有任何第三方庫依賴。它支援蒙特卡洛路徑追蹤、全域性光照、BVH加速、自適應取樣、降噪、大氣散射等功能,並提供了Blender匯出器。
近日,一位獨立開發者釋出了Luz,這是一個完全從零開始用C++20編寫的路徑追蹤器,不依賴任何第三方庫。該專案在GitHub上開源,目前獲得了3顆星和1個關注者。
Luz的核心功能包括蒙特卡洛路徑追蹤、全域性光照、多執行緒CPU渲染、自適應取樣和降噪(NFOR風格)。它支援多種幾何體(球體、平面、矩形、三角形、立方體、體積和OBJ網格)以及多種材質(朗伯、金屬、電介質、自發光和各向同性)。光源型別包括區域光、點光源、球面光和方向光。
在加速結構方面,Luz使用了BVH(包圍體層次結構)加速,包括打包網格BVH和基於bin的SAH構建演算法,並採用近優先遍歷策略。它還實現了重要性取樣和機率密度函式。
Luz還支援大氣散射模擬、景深、抗鋸齒、曝光控制、對比度調節、色調對映、伽馬校正和輝光效果。輸出格式支援BMP和TIFF。
專案提供了一個基準測試框架,用於渲染、降噪、後處理和評分比較。構建系統支援Makefile和CMake,相容macOS、Linux和Windows系統。
命令列介面允許使用者透過引數控制渲染解析度、取樣數、自適應取樣、最大反彈次數、執行緒數等。自適應取樣功能可根據畫素的收斂情況動態調整取樣數,以提高效率。
Luz還包含一個Blender匯出器,可以透過Blender的Python API將場景匯出為.luz格式。此外,專案提供了詳細的文件和示例場景。
開發者表示,特別感謝《Ray Tracing in One Weekend》系列書籍的啟發。該專案遵循MIT許可證。