レイトレーシングを利用したラスター化

最終更新日14 Feb 2017 05:17


ソースコードはこちらShaderToy Color cube

レイトレーシングフラグメントシェーダと相性が良いです。

実装の概要

フラグメントシェーダの中で
シーンに存在している三角形全部をループで回して、一つ一つレイと三角形が当たっているかを判定します。
当たっていたら色をつけます。

デプステスト

// clear zbuffer
float mindist = 10000000.0;
for(シーンに存在するすべての三角形){
           if(レイが三角形に当たっていたら){ 
               float z = 交点.z;
                //デプステスト
        if( z<mindist )//もし今まで登場した三角形より手前に存在していたら
        {
            mindist = z;//最小の距離の値更新
            vec4 localP = (1.0-uvt.x-uvt.y)*a+uvt.x*b+uvt.y*c;
            color = なにか色をつける;
            }
    }

depth rasterization ray-triangle visibility

サポートサイト Wikidot.com depthrasterizationray-trianglevisibility