2026:02:22
2/22日記
プログラム
- ラスタライザ開発中。
- レンダラーなのかラスタライザなのかよくわからなくなってくる。
- 2D描画ができる、ピクセル描画機能を提供しているとなるとレンダラーな気がしてくるんだよな。
- ちなみにラスタライズ処理とレイトレーシングは別のソースで書いている。
- となるとレンダラーかなあ・・・
- まず3Dレンダラーを組み込みしてみた。
- ソースコード眺めてみると、視野角の関係で歪んで見えてくるのか、なるほどと思った。
- 3Dのアプリも作れそうな気がしてくる。
- 次にaobenchを移植というかラスタライザに組み込みしてみた。
- 一時期色んなところにaobench移植するの流行ってた記憶がある。
- 実際自分が制作に参加したデモもaobenchを最初に組み込んでみたはず。qさん(ry
- さすがにマルチスレッド想定ではないせいか、アプリ側のタイマでは描画タイミングを制御できないため、タイマーが規定秒数以下だったらaobenchのレンダリング起動して、以降は描画しないという形にしてみた。
- これで4kbGraphicsも作れそう。まぁ解像度は小さいけど。
- 画像切り出し表示機能を実装済み。
- 最初に描画画像のサイズを定義する方式で実装してある。画像を作るときに仕様を決められるので楽ではある。
- 画像の開始位置は自分で定義する必要があるが、ここを見えない形で管理すると面倒であると思ったので、このままで行こうと思う。(当初は内部で勝手に分割しておこうかなとも思った名残がある)
- まぁどっちもできたほうがいいので実装予定だけど端っこが足りないときとかで考慮が必要。
- 描画するときになってここだけ欲しい、みたいなのもあるので、画像サイズを別途指定して描画できるようにもしておいた。
- 整理すると以下関数を作成予定。
- 未作成:画像サイズを規定のサイズで、規定のサイズ分の範囲を自動で割り当てて切り取る関数(縦のサイズが揃ってるときに利用しやすくする、ただその挙動を理解しないとダメなので、データ作る段階から考慮してないと利用は難しい)
- 作成済み:画像サイズを規定のサイズで、任意のグラフィック座標から切り取る関数(汎用性が高い)
- 作成済み:画像サイズを任意のサイズで、任意のグラフィック座標の範囲を切り取る関数
- あとは裏側にもう1枚仮想スクリーンと同じサイズのバッファ(現在の名称Extraバッファ)を取得できるようにした。
- 転送で負荷が発生しないかが気になったが。memcpyでコピーを行えば毎フレーム確保しても速度的には問題ない模様。
- なので1枚分仮想スクリーンの情報も取得できるようにした。
- 参考
- で、上のaobenchを組み込んでみたときにちょうどいいので描画機能を実装してみた。
- 雑なコラ画像みたいになった。
- 元々aobenchは白黒の画像でambient occlusionを投影するプログラムなんだけど、レイが反射しないところには黒を配置する。
- で、自分が作ってるラスタライザは黒をカラーキー(透過扱い)としている。
- 結果、背景が透過扱いになりスクショのような形になった。これはこれで面白い。
- 例えば上記のように、目的のレンダリングが完了した段階でExtraバッファに保存すれば、これを使ってドット絵の補間やポストエフェクトみたいなのもやりやすくなることを想定している。
2026/02/22.txt · 最終更新: 2026/02/22 22:30 by machiaworx