2026:02:21
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 2026:02:21 [2026/02/21 12:03] – machiaworx | 2026:02:21 [2026/02/21 17:38] (現在) – machiaworx | ||
|---|---|---|---|
| 行 2: | 行 2: | ||
| ===== プログラム ===== | ===== プログラム ===== | ||
| + | * レイトレーサーを実装してみた。 | ||
| + | * https:// | ||
| + | * Copilotに依頼したら出力してくれたので、これをベースに処理するクラスを作成してみた。 | ||
| + | * 自分が実装したことあるのはシェーダベースのレイマーチングによるものなので、それもなかなか偏ってるので、まずレイトレとはどうやって実装するものぞというのを調べてみたもの。 | ||
| + | * 現在作っているのが2Dのラスタライザなので、あくまでラスタライザ上で描画する対象としてレイトレーシングを動かす。 | ||
| + | * 実装としてはアプリケーション側から描画命令を呼び出す。 | ||
| + | * レイトレーサー内の更新はゲームスレッドで動かして、レイトレーシングを描画命令で起動することにした。 | ||
| + | * 更新と描画は別スレッドでの動作してるせいか、割とさくさく動いてビビる。 | ||
| + | |||
| + | ---- | ||
| + | * やってることは当然ながらレイマーチングと似ている。 | ||
| + | * 画面のピクセルごとに「どの地点から光が飛んでいて、どう反射しているの」をシミュレートしている。 | ||
| + | * カメラの仰角とかの絡みがいまいちわかってない気がする。 | ||
| + | |||
| + | ---- | ||
| * ここ1週間でテンションが上がりすぎてソースコード書き散らしてた。 | * ここ1週間でテンションが上がりすぎてソースコード書き散らしてた。 | ||
| * 結果、内部がなかなかやべえ変数名だったりコメントがなかったりしてた。 | * 結果、内部がなかなかやべえ変数名だったりコメントがなかったりしてた。 | ||
| 行 15: | 行 30: | ||
| ---- | ---- | ||
| * 使いやすさを意識してモノリシックに作ろうとして構成を変更してみたけど、メモリ違反が発生する。 | * 使いやすさを意識してモノリシックに作ろうとして構成を変更してみたけど、メモリ違反が発生する。 | ||
| - | * 勿論内部で排他制御をかける必要があるんだけど、最終的には外部ライブラリ上に書き出すわけで、マルチスレッドができるかどうかはライブラリ側の実装に依存してしまう。 | + | * 勿論内部で排他制御をかける必要があるんだけど、最終的には外部ライブラリ上に書き出すわけで、マルチスレッドができるかどうかはライブラリ側やOS標準APIの実装に依存してしまう。 |
| * となると、そもそもフレームワーク内部でマルチスレッドで動かす仕組みが必要ないのでは?という話になり、モノリシック化は諦め。 | * となると、そもそもフレームワーク内部でマルチスレッドで動かす仕組みが必要ないのでは?という話になり、モノリシック化は諦め。 | ||
| * 代わりにライブラリ側に比較的自由に組み込みが可能なのがメリットということにしておこう。 | * 代わりにライブラリ側に比較的自由に組み込みが可能なのがメリットということにしておこう。 | ||
| - | * いざとなったらレンダラ側だけでも取り外して動かせるという扱いにしておく。 | + | * いざとなったらラスタライザ側だけでも取り外して動かせるという扱いにしておく。 |
| + | * アプリケーションフレームワークとラスタライザのセットだけど、ラスタライザだけでも問題なく動かせるよ、という感じ。 | ||
| ---- | ---- | ||
| * 殴り書きなせいで処理自体が重複していた部分や無駄に比較している処理があったので、少し修正済み。 | * 殴り書きなせいで処理自体が重複していた部分や無駄に比較している処理があったので、少し修正済み。 | ||
| - | * 結果、FPS80前後だったのがFPS115-120くらい出るようになった。 | + | * 結果、負荷かけた描画がFPS80前後だったのが、FPS115-120くらい出るようになった。 |
| + | ---- | ||
| + | * これよさそう | ||
| + | * https:// | ||
| + | * | ||
2026/02/21.1771643003.txt.gz · 最終更新: 2026/02/21 12:03 by machiaworx