Optix Ray Tracing 基本概念流程

Optix Ray Tracing 基本概念與流程

Optix 3D幾何物件階層與用途
  1. 基本設定設置好
  2. createContext()      建立context,並把該配置的東西配好
    =>建立Context
    =>設定Context的Ray Type數量Entry Point計算入口點數量stack size大小=>設定會成為Context的cuda中的一些成員資料
    =>建立Output buffer,用以存放ray tracing結果

    =>設定Ray Gerneration光線生成程式(也就是描述你的camera要如何生成ray來追蹤)
    =>設定Exception例外程式
    =>設定Miss Program(當光線沒打到任何3D內容物件時會執行miss程式)
  3. createGeometry()   建立與設定3D內容與綁定render方法

    =>設置好場景中的3D內容物件 (load model或用程式寫好描述好他)
    =>對場景中每個3D物件客製化一個material材質,因為光線追蹤程式(rtTrace())是綁定material一起的,所以要一個個對material做設定

    =>對個別3D物件material設定closeset hit program (常用於上色的光線追蹤)any hit program (常用於陰影追蹤)等program

    (*closest hit這些tracing program都寫在cuda之中)


    =>透過context->createGeometryInstance()將3D物件與他的material綁定在一起,並丟到GeometryInstance的vector容器中

    =>將每個GeometryInstance集結成一個Group送至GeometryGroup物件中(setChild())
    =>將這個裝滿整個3D場景的Group送到cuda之中做tracing。
  4. 設定相機基本位置角度等資料
  5. 設定光源位置 顏色等相關資料,並傳入context
  6. context->validate()   使context準備完善
  7. 進入render loop
    =>updateCamera();  將目前最新的camera位置角度等等相關資訊傳入context中
    =>context->launch(0, width, height);  啟動Optix Ray tracing context 追蹤整個3D場景內容
    =>destroyContext();  結束追蹤 銷毀context
    =>重新執行loop

  8. Debug技巧,在try and catch程式碼區段SUTIL_CATCH(context->get())的地方設置中斷點,並且透過visual studio的"逐步執行"觀察自動變數中optix所提供的Error Message(目前並不會提供compile error出來,只能用這種方法debug)

留言

這個網誌中的熱門文章

使用Visual Studio建置optix專案

freezing Keras model