Shaderレイトレーシングの概念を理解するためにUnityでレイトレしてみるシリーズ第二弾。今回は複数の球体を描画してみます。自分の中でしっかり理解することを目的としてUnityで実装しなおしただけのものです。qiita.com上の記事の方がしっかり解説されていますのでUnityのコードが必要ない方は上の記事を読むことをお勧めします。前回はレイトレーシングで球体を描画してライティングまで行いました。light11.hatenadiary.com本記事では前回の実装を元に実装を行いますので、必要に応じて前回の記事を参照してください。衝突判定の関数を修正するさてそれでは複数の球を描画するための実装をしていきます。前回作った衝突判定用の関数に手を加えます。return;}変更点として、intersectSphereの返り値をvoidにしてinout修飾子を付けたIntersection構造体を引数として追加しています。このIntersection構造体を複数の球の衝突判定に使いまわすことで、複数の球体との衝突結果を取得します。具体的には、Intersection構造体に新たに定義したdistanceという変数に視点と衝突との距離を示す値を入れます。衝突判定時にこれを使って、すでに衝突判定が行われている点よりも遠い点で衝突しても無視するような実装にします。複数の球を描画するあとは複数の球を定義して前節の衝突判定関数でレイとの衝突判定を行うだけです。以下にシェーダを全文記載しておきます。}}フラグメントシェーダで球を3つ定義して順番に衝突判定しています。結果レンダリング結果は次のようになります。正常に描画されていることが確認できました。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。Blur(渦巻ブラー)のポストエフェクトを実装する月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。