NVIDIA OptiXでレイを飛ばしてみる PART2

はじめに

  • 研究室で独りでにレイを飛ばしている木内です. 最近NVIDIA OptiXを使っているのですが,アプリケーションを作るまでが結構長いのでここにまとめます.間違いや、修正したほうが良い点がございましたら、 Twitter @sketchbooks99 か、Email kiuchi@media.lab.uec.ac.jp に ご連絡ください。

  • 記事作成者のプロフィール : https://www.media.lab.uec.ac.jp/?page_id=1434

  • PART1はこちら

このページは?

  • NVIDIA OptiXについてまとめるページです.
  • ここでは自分だけのアプリケーションを作るまでの過程を説明します.

ソースコードを改変する

  • PART1 ではOptiXのインストールからサンプルを動かすまでを行いました.
  • ここでは,ソースコードを改変して自分なりのアプリケーションを作成するまでを行います.

準備

  • 前回はインストールしたフォルダで ビルドしたり実行しました.

  • ソースコードを改変したい場合は,このファイルを 別の場所 にコピーする必要があります.

  • ここでは デスクトップOptiX フォルダを作成して,その中でアプリケーションを作っていきます.

    ~/Desktop/OptiX/ を作成
  • フォルダを作成したら, OptiXをインストールした場所 (C:\ProgramData\NVIDIA Corporation\OptiX SDK 7.2.0) 内にある SDK フォルダを,作成したフォルダ内にコピーします.

    • 以下のようになっていればOKです.
  • 以降は PART1 で説明したようにビルドすれば良いですが,サンプルプロジェクトを全てビルドする必要はありません.

  • そこで,今回は自分が改変したいソースを持つプロジェクトのみをビルドしていきます.

  • まずは 改変するプロジェクト以外のフォルダを SDK から削除します. ここでは PART1 で実行した optixPathTracer を改変するので, それ以外のフォルダを消します.

  • SDK フォルダ内が以下のようになっていればOKです.

    • ※ Part1で作成した build フォルダがある場合は削除しておきます.
  • 自分が中身を変更していくので,フォルダや中のソースファイル名も変更しましょう. optixPathTracermyPathTracer に変えます. 中の .h/.cpp/.cu ファイルも変更していきます.

    • 変更後
    • myPathTracer フォルダ内
  • 次に 2つの CMakeLists.txt を編集します.

    • まず, SDK 以下の CMakeLists.txt を編集します.
    • CMakeLists.txt を開き,
#########################################################
#  List of samples found in subdirectories.
...
  • と書かれた部分以下から先ほど削除したフォルダ名を削除し,新しく myPathTracer を追加します.

  • 次に myPathTracer/CMakeLists.txt を編集します.

    • ファイルを開き,ファイル名を myPathTracer に変更します.
  • 最後にソースのファイル名を変更しているので, .h/.cpp/.cu ファイル内の optixPathTracer となっている部分をすべて myPathTracer に変更します. #include文 だけでなく, .cu を読み込む部分なども変更する必要があるので注意してください.

  • ここまでできたら,PART1 と同様に Cmake→Visual Studioの順でビルドして実行します.

    • この時,CMake実行中に以下のようにエラーが出るかと思います.
    • これはOptiXの includeディレクトリ が正しく設定できていないことによるものなので,以下のようにincludeディレクトリを設定します.
    • 設定したらそのまま Configure をもう一度実行して,完了したらGenerateを実行します.

ソースをいじってみる

試しに myPathTracer.cpp 内のコードを書き換えて見ます.
310 - 317 行目の g_diffuse_colorsの内,2番目の色を青に変更します.

const std::array<float3, MAT_COUNT> g_diffuse_colors =
{ {
    { 0.80f, 0.80f, 0.80f },
    { 0.05f, 0.05f, 0.80f }, // {0.05f, 0.80f, 0.05f} -> {0.05f, 0.05f, 0.80f}
    { 0.80f, 0.05f, 0.05f },
    { 0.50f, 0.00f, 0.00f }
} };

右側の壁が青色に変わったら成功です.

“NVIDIA OptiXでレイを飛ばしてみる PART2” への1件の返信

  1. ピンバック: NVIDIA OptiXでレイを飛ばしてみる PART1 | UEC Media Design Lab