2026:02:21
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 2026:02:21 [2026/02/21 12:45] – machiaworx | 2026:02:21 [2026/02/22 06:10] (現在) – machiaworx | ||
|---|---|---|---|
| 行 2: | 行 2: | ||
| ===== プログラム ===== | ===== プログラム ===== | ||
| + | * レイトレーサーを実装してみた。(レイトレーシングを実行するプログラムな) | ||
| + | * https:// | ||
| + | * Copilotに依頼したら短いプログラムを出力してくれたので、これをベースに処理するクラスを作成してみた。 | ||
| + | * 自分が実装したことあるのはシェーダベースのレイマーチングによるものなので、それもなかなか偏ってるので、まずレイトレとはどうやって実装するものぞというのを調べてみたもの。 | ||
| + | * 現在作っているのが2Dのラスタライザなので、あくまでラスタライザ上で描画する対象としてレイトレーシングを動かす。 | ||
| + | * 実装としてはアプリケーション側から描画命令を呼び出す。 | ||
| + | * レイトレーサー内の更新はゲームスレッドで動かして、レイトレーシングを描画命令で起動することにした。 | ||
| + | * 更新と描画は別スレッドでの動作してるせいか、割とさくさく動いてビビる。 | ||
| + | |||
| + | ---- | ||
| + | * やってることは当然ながらレイマーチングと似ている。 | ||
| + | * 画面のピクセルごとに「どの地点から光が飛んでいて、どう反射しているのか」をシミュレートしている。 | ||
| + | * ただ、カメラの仰角とかの絡みがいまいちわかってない気がする。 | ||
| + | * ここは色々見たり計算しながら確認するしかなさそう。 | ||
| + | |||
| + | ---- | ||
| * ここ1週間でテンションが上がりすぎてソースコード書き散らしてた。 | * ここ1週間でテンションが上がりすぎてソースコード書き散らしてた。 | ||
| * 結果、内部がなかなかやべえ変数名だったりコメントがなかったりしてた。 | * 結果、内部がなかなかやべえ変数名だったりコメントがなかったりしてた。 | ||
| 行 23: | 行 39: | ||
| ---- | ---- | ||
| * 殴り書きなせいで処理自体が重複していた部分や無駄に比較している処理があったので、少し修正済み。 | * 殴り書きなせいで処理自体が重複していた部分や無駄に比較している処理があったので、少し修正済み。 | ||
| - | * 結果、FPS80前後だったのがFPS115-120くらい出るようになった。 | + | * 結果、負荷かけた描画がFPS80前後だったのが、FPS115-120くらい出るようになった。 |
| + | ---- | ||
| + | * 高速なスクリプト言語としてumkaを組み込んでみたが、どうも特定クラスへ処理系を組み込む形ができないらしく、クラスから別途定義したC言語スタイルの関数へ登録して呼び出し、みたいなことをやらなければいけないらしい。 | ||
| + | * 自分はC言語での作り方も書けるんだけど、ラスタライズシステムのほうでClassを使ってしまっている。 | ||
| + | * ゲームへの組み込みも少し工夫しないとダメそう。 | ||
| + | |||
| + | ---- | ||
| + | * これよさそう | ||
| + | * https:// | ||
| + | |||
| + | ---- | ||
| + | * 人様のプログラムを確認してた。 | ||
2026/02/21.1771645511.txt.gz · 最終更新: 2026/02/21 12:45 by machiaworx