マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

自作GPU

うん、データが間違っていた

自作GPUでモデルの描画がうまくいかないと思ったら、読みこんでたモデルデータが間違っていたことに気付く。なんだってー?!な状況だが、うっかりミスにより、期待していた値が入っていなかった。しかも致命的なミスだったため、何も描画できない!なんてこ…

FPGAとx86のマルチタスク(CPUとかの話ではない)

FPGAとx86をマルチタスクで切り抜ければいけないが、人間のマルチタスクはスタック破壊が平気で行われるので危険。プログラムカウンタも曖昧な値になり、だいたいここらへんというところしか指さない。人間って悲しい。さて、今日、自作GPUは完成しなかった…

FPGAとの戦い

今苦戦してるのはラスタライザうんぬんというよりは、FPGAとの戦いになっている。Verilog HDLわかってない自分の力を痛感しているが、少しずつ先に進んでいる実感もある。もう少し...そんな気もしながら更に先へ...俺、この戦いが終わったらDE0で3Dモデル描…

何かが進んでいる

DE0のFPGAの内蔵メモリの値を読み込めているかテストするために何故かVGAを使って出力する謎ハック(?)。この内蔵メモリには初期値としてモデルデータを与えていて、画面座標とメモリ番地が微妙に対応している。そして、メモリの値によって赤と黒を使い分けて…

Nios IIを使わずとも...

Nios IIから自作GPUに座標データを渡して描画するなどという夢を見ていたが、別にそんな必要はなかったー!と思った。Mega Wizardとやらからメモリモジュールを作成するときにメモリの値を設定できるらしい。そしてIntel-Hex方式(?)とやらで渡せばいいらしい…

3Dに向けてのラスタライザ

ジオメトリエンジンからラスタライザにかけて、いろいろ問題があったが、普通にできそうな気がしてきたので、レイトレをやめてジオメトリエンジンからラスタライザにすることにしました!そしてちょっと前に2Dの三角形を表示するラスタライザの処理が終わった

そろそろ本気出さねば

結局、今までレイトレでポリゴンしか表示できてないわけだが、球も表示したいと思いつつ、ラスタライザなども考えていた。しかし、レイトレでいいやという結論に至った。しかし、固定小数点数の精度が厳しい。なんとかならないものか!なんとかするんだけど…

怪しい近似式について

distance = max * 0.84 + middle * 0.5175 + min * 0.2675という式を以前求めていたが、これはベクトルの長さを近似用に作ったものだった。ただスカラーの平方根も欲しいと思っていたが、xyzを求めたい平方根の元の数に合わせて√3で割ればいいんじゃないだろ…

俺達の自作GPUはこれからだ!

いろいろあって球の描画を一旦やめて、三角形表示に行き、うまくいった。なので球の描画に戻ることにした。これができないとカーネル/VMでのデモが二次元な三角形を1つ描画して終わる。かなしすぎるので、なんとしてでも球を描画したい。まだ時間はある。頑…

結局残ったのは固定小数点数の誤差だった

しばらくの間、自作GPUの中で使っているベクトルの正規化がうまく機能しておらず、どうしたものかと悩んでいたら、結局は固定小数点数の誤差だった。今まで気を使っていた部分ではあるが、何度も苦しめられている。だが、今回も無事に乗り切り、正規化に成功…

平方根を使わずに三次元上の2点間の距離を近似する

翻訳:平方根を使わずに高速で2点間の距離を近似する http://d.hatena.ne.jp/nowokay/20120604#1338773843を見て三次元オリジナルバージョン(コメントにある通り、係数は違う方法で求めています。力技で求めました)を作ってみようと思い計算を始めた。とり…

平方根を避けたい

3Dグラフィックスを扱うとベクトルの正規化は避けられないと思うが、そこででてくる平方根求めるためにニュートン法使ったらコンパイルが急に遅くなって死にそう。なんとか近似できないものかと思ったら下記のエントリ発見!これは使うしかない。ただ二次元…

三角形らしくなってきた

固定小数点数の精度を見直して、三角形らしい形になってきた。まだノイズがあるので、消したいところだが、これ以上精度を弄るのは微妙なところ。bit数上げればとも思うが...

解決しつつある

問題は小数の精度だったらしい。固定小数点の小数部の精度を上げたら綺麗になってきた。まだ、汚いけどさっきに比べれば大分良い

自作GPUでポリゴンが表示できた!

と思うんだけど、これはどうなんだ?VGAの魔力でこうなったのか?それにしても酷過ぎる

よしポリゴンを表示だ!あれ...?

Verilog HDLに苦戦しながらも、ディスプレイに出力ができた。そして、ポリゴンを一枚ディスプレイに表示させるはずが...あれ?何をミスったんだ。固定小数点数の扱いか?それとも単なる計算ミスか?はたまた...

コンパイルに物凄く時間がかかる

きっと、適切でない使い方をしてるからだろう。HDLのコンパイルに物凄く時間がかかるようになってしまった。まぁ、だんだんわかっていくだろうから気にはしてないが...

HDLをいろいろわかってないので

わかってないぶん、いろいろな部分で苦労する。まだ描画できてないけど、計算はほぼ完成しているのであと少しのはずなんだけどなぁ。カーネル/VMのネタ候補だけになんとかしたい

ようやく表示できると思いきや?

DE0でようやくVGAで出力できると思いきや計算ミスって背景色しか描画されないと言う悲しさ。固定小数点数の計算でミスってるのか、それとも計算自体がおかしい?まぁ、地道にデバッグします。シミュレータ、シミュレータ

凄い人は凄い

これは勝てない...

テレビで遊ぶ

DE0で遊べるディスプレイがないと思いきやテレビが使えることがわかった。ちゃんと表示もできたし自作GPUの開発は進めれそうだ。そろそろ動いているところを写真に撮れそうだ。でもDE0で扱える色が...頑張れ私!

試行錯誤

くだらないミスを多発してるため、試行錯誤回数が増えている。もっと勉強してからと思うが、事前には勉強しないんだよな〜これが。うん、行動しないと勉強しないし、勉強だけやるのは苦手だ。だから行動に移した。そして失敗している。悲しい

道が閉ざされた

FPGAで遊んでいたディスプレイが壊れた。7年前に1500円で買ったかなり古いディスプレイだったので精神的なダメージは少ないが、FPGAで遊べるディスプレイが無くなったのが痛い。今、金があれば...

固定小数点数

浮動小数点数をどうやって実装するかわかってないので、固定小数点数を扱うしかない。昔、何かの言語で固定小数点数を作って計算していた気がするのと、最近、とあるARMが乗っているコンピュータで扱ったことがある。とあるARMが乗っているコンピュータでは…

道は見えた

DE0でGPUを作りたいと思ってたのだが、SDRAMが8Mとの戦いになっていた。が道は開けそうだ。今の方法を諦めて別の方法をとることにすれば、だいぶメモリが節約できることがわかった。まぁ、最終的にはメモリがどうなるか心配なんだけど。とりあえず、明日、新…

Nios IIを使い始めた

これから作ろうとしているプログラムの形が見えてきた。今度こそ頑張れそう。あとはDE0からVGAで画面に出力すれば、だいぶ話は進みそう。まずは2Dから頑張る