從零開始用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許可證。