問題タブ [raytracing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graphics - 透明なサーフェスを介したシェーディングの計算
レイ トレーシングでは、レイが当たったポイントのシェーディングを計算したいと考えています。すべての光源に線を「描き」、それらがオブジェクトによってブロックされているかどうかを確認します。それらがブロックされていない場合は、それらの強度と、「ヒット レイ」とサーフェス法線の間の角度に従って、照明の強度を計算します。
しかし、部分的に透明な表面によって光が遮られた場合はどうなるでしょうか? その後、光は点を照らすはずですが、その強度と色は通過する表面の色の影響を受けます。それを計算するには、光線の通過点に対してレイ トレーシングを行う必要があります (実際には入口と出口の 2 つのポイント)、これは非常にコストがかかるだけでなく、ほとんど終わらない可能性があります (光源とサーフェスを適切に配置すれば、トレーサーをほぼ無限に配置できると思います)。ヒットごとにループします)。
色を近似するための高速で適切な方法はありますか、または表面の色を光の色として、その透明度を強度として使用する必要がありますか?
coordinates - レイトレーシングの質問、画面の座標を世界の座標にマッピングする方法は?
このコードに出くわしたとき、私はhttp://www.devmaster.net/articles/raytracing_series/part1.phpでレイトレーシングを勉強していました。
作者が画面の座標を世界座標にマッピングする方法についてはかなり混乱しています...
作者がこれらの線をどのように導き出したか教えていただけますか?
または、画面の座標を世界の座標にマッピングする方法を教えてください。
前もって感謝します!
c++ - レイトレーサーを書きたいのですが、使用する代数ライブラリにこだわっています (C++)
独自のマルチスレッド リアルタイム レイトレーサーを C++ で書きたいと思っていましたが、それに付随するすべてのベクトルおよびマトリックス ロジックを実装したくありません。これに適したライブラリを見つけるためにいくつかの調査を行うと考えましたが、あまり成功していません...
実装が高速であることが重要であり、できれば使いやすいライセンスが付属していることが重要です。基本的な代数があると読んだことboost
がありますが、その速度に関してどれだけ優れているかについては何も見つかりませんでした。
残りについては、Google から提供Armadillo
された .
それからSeldon
、効率的で便利だと主張している を取得しましたが、スケール上の正確な位置を見つけることはできませんでした.
最後に、について読みEigen
ました。これは、ここで検索しているときに StackOverflow で言及されていることもわかりました。
大学の CG の講義でHLSL
、代数 (学生にレイトレーサーの一部を実装/最適化させる) に使用されているので、これに使用できるかどうかを考えさせGLSL
られました。繰り返しになりますが、どのオプションが最も効率的であるか、代数ライブラリーに関する一般的なコンセンサスが何であるかはわかりません。SOがここで私を助けてくれることを望んでいたので、実際の開発を始めることができます:)
PS: サイトへのリンクを試みましたが、まだ十分な担当者がいません。
3d - レイトレーシングに固有または最適な3Dシーンフォーマットはありますか?
私はレイトレーサーに取り組んでいますが、3Dシーンのファイル形式に関しては車輪の再発明をしたくありません。また、他の人が作ったシーンで自分のプログラムをテストできるようにしたいと思います。私は3Dモデラーではなくプログラマーです。
レイトレーシングに固有または最適な3Dシーンフォーマットはありますか?
c - OpenCL コードを作成する場合、GPU のないシングルコア マシンでどのように動作しますか?
こんにちは、私は現在、研究プロジェクトのためにレイトレーサーを FORTRAN 77 から C に移植しています。
本質を移植した後、問題は並列化にどのように進むかです。
ラボでは、2 ~ 8 コアの異なる Opteron マシンにアクセスできますが、(今のところ) GPU はありません。64b gentoo を実行しています。
GPGPU バージョンは (非常に) 望ましいものですが、プロジェクトにプログラマーが 1 人しかいないため、非 GPU バージョンと GPU バージョンを別々に維持することは選択肢ではありません。
また、コードは GPL で保護されているため、ハードウェアが大きく異なる他のユーザーがコードを使用することを望んでいます。
そのため、GPU やマルチコア システムを使用しなくても、プログラム全体を簡単にコンパイル/実行できる必要があります。
OpenCl は、GPU のないマシンで実行できるため、良いオプションのように思えますが、このコードはシングルコアまたは 32b システムでどのように動作しますか?
openCLなしで簡単にコンパイルできるような方法でコードを書くことは可能でしょうか?
c++ - boost::threadpoolをboost::bindと一緒に使用すると、プログラムが無限ループでハングします
を使用して、プログラムの特定の側面を並列化しようとしています( 、linkboost::threadpool
の公式部分ではありません)。しかし、プログラムが停止しているのを見つけて調べたところ、 2つの非アクティブなスレッド(スレッドプールにあると思われる)と1つのスレッドが100%で実行されている(メインの実行スレッドにあると思われる)ことがわかりました。boost
htop
関連するコードは次のとおりです。
問題が私の構成にあると思う理由は、関数boost::bind
を作成してそれをに渡すときに、プログラムがその無限ループに入らないためです。私はここで何が間違っているのですか?void foobar() {}
boost::threadpool::pool::schedule
c++ - 一人称でのレイピッキング
こんにちは:)私は何週間も探していて、解決策を見つけることができません。一人称カメラを使用する場合のレイピッキングの実装方法を教えてください。公式のどこにカメラの方向を含めると思いますか?誰かがこれの解決策または実用的なコーディングを持っている場合はコメントしてください
どうもありがとうございます
raytracing - サンプル技術に関する質問
私はレイトレーサーに取り組んでいます。tls.googlecode.comに あります
近くで見ると、最初の画像に多くのノイズが見られます。私の質問は: ジッター サンプラーの通常の動作ですか?
いくつかの情報: 最初の画像は、1024 サンプル/ピクセル (アンビエント オクルージョン)、ジッター サンプラーでレンダリングされます。そして、256 サンプル/ピクセルでレンダリングした場合、大きな違いはありません。
ソース コードは、短い sampler.h/sampler.cc にあります。このレイ トレーサーの他の部分に関するコメントは大歓迎です。
ありがとう!
arrays - Haskell で高速な BVH 表現をロールする方法
私は Haskell Raytracer で遊んでいて、現在、階層を格納するために単純なバイナリ ツリーを強調する BVH 実装を使用しています。
ここで、Dimension はX
、Y
またはZ
(より高速なトラバーサルに使用) であり、AABB は軸に沿ったバウンディング ボックスのタイプです。これはかなりうまく機能していますが、できるだけ早くこれを取得したいと思っています。したがって、私の次のステップ (C/C++ を使用する場合) は、このツリーを使用して、ノードが配列に格納される平坦化された表現を構築することです。「左」の子はすぐにその親ノードと親の右の子のインデックスに従います。親と一緒に保存されるので、次のようなものがあります。
私はまだこれを実際に試していませんでしたが、LinearNode
インスタンスを UArray に格納することもInt
、正しい子のインデックスをFloat
、単一の UArray 内の AABB (間違っていた場合は訂正してください)。また、2 つの配列を使用すると、キャッシュの一貫性が低下します。したがって、基本的には、ツリーを効率的に保存して、トラバーサルのパフォーマンスを向上させる方法を探しています。それはあるはずです
- コンパクト
- 良好な地域特性を持つ
- 最近のGHCコンパイラで動作
- 可能な限り少ない間接化を通過する必要があります(「サンク」を通過してもパフォーマンスは向上しないため、「ボックス化されていない」タイプが役立つと思います)
raytracing - CUDA/OpenCL などを使用せずにレイトレーシングに GPU を使用することは可能ですか?
CUDA や OpenCL などの機能をサポートしていない Windows Phone 7 で作業しています。私は GPU 側に慣れていません。レイトレーシングを高速化するために使用できる GPU はありますか? 三角交差テストのような?または、テクスチャから正しい色を選択しますか?