00/06/28最近、毎週土曜に、さ〜さんが遊びに来てくれます。ここから自転車で来れる距離なのです。テレホタイムに来られたときは、さ〜さんと、他の人のホームページ見ながら、ああでも無いとか、こ〜でもないとか言ってます(笑)先週の土曜日の話。第B3回で紹介した、SYNさんのホームページ(我々にとって、一種のカリスマやね^^)http://www1.odn.ne.jp/synsyr/の飽和加算/飽和減算のところに名前が掲載されたことに気を良くした我々は、飽和加算(さ〜さん言わく、ほんわかさんらしい^^)はいいけど、飽和減算はまだなんとかなるやろ?とその場で式をいじくり回していたのだが、根性なしなやねうらおは、30秒ほど考えて、もうええわ(笑)と投げ出した。さんは、その後も考えていてどうやら飽和加算との対称性から新たな方法を打ち出したようだ。http://www1.webnik.ne.jp/%7Esanami/codemaster/index.html#CODE21の第21回を参考のこと。うらおも、ちらっと頭のなかをよぎった方法だが、演算回数が同じだから...とか思っていたら、レジスタ効率がわずかに良いようだ。mask);とやることだった。increment/decrement。dwNum;}である。内容は、飽和するBYTEは0になるようにしたもの(dwNum)を求めて、それを足しているだけ。アルゴリズム的には、これが一番わかりやすいし、数字を変えることで、いろいろ応用も出来そうである。このコードと前者とどちらが速いのかは、微妙なところです。B;としたほうがレジスタ効率はあがりそうです。B;まあ、そうしてみると、SYNさんのより速いような気がします。そんなわけで、やねうらおの結論。0x010101;ついでに、>>8の部分、アセンブラならばキャリーを絡めたローテイト(rcr)にすれば3バイトではなく、4バイト同時にincrement出来ますね。ーことで、これで、1ポイントゲット〜!やねうらおは、さ〜さんと並びました。0x010101;でした。ここは、別に0x020202でも構いません。SYNさんのコードより改善されず...。00/07/04まず、第B8回のCreateDIBSectionの説明にやや誤りがあったので訂正します。補足記事、第BC回に有り)ひとつは、64Kでアラインされているのは、メモリマップトファイルの関係であって、1×1のDIBに実際にメモリを64K消費するのではないだろう?ということです。確かにその通りで、最初の一回だけメモリ64K+BITMAP構造体のためのメモリ約4Kを消費するだけで、以降はBITMAP構造体の分しか消費しません。よって、メモリの消費量の上では問題ないように思えます。Windows95/98系はリソースエリアは2Mという制限があるので、小さなビットマップを作りつづけると、先にその制限に引っ掛かるのではないかとのことです。確かに600回ほどCreateDIBSectionしたところでCreateDIBSection出来なくなりました。中野さん言わく、NT系ではこの制限はないので、NT系で開発していると、よくこの制限でハマルそうです。http://www.microsoft.com/JAPAN/support/kb/articles/J028/9/84.htmにある通り、ユーザー定義のビットマスクは作成できるのではないかということです。(村瀬OSM修さんより指摘あり)24bppではCreateDIBSectionは成功しないのと、Windows95ではユーザー定義のビットマスクは不可だったと思うので、この場合DirectDrawSurfaceのとりうるすべてのピクセルフォーマットとコンパチなDIBを作成するというのは不可能なようです。Win32のBitBltは、転送前に2つのDCがパレット的にコンパチであるか(適合パレット)、そしてピクセルフォーマット的にコンパチであるか(これは適合ピクセルフォーマットとでも呼ぶのだろうか?)をチェックするようで、その条件を満たせば単純なメモリ転送で済むので高速転送が期待できます。よって、16bppのときに、DirectDrawSurfaceをLockしてピクセルフォーマットを取得し、RGB555か565かを判別して(注:Win32のAPIではそれを判別する手段が無い)、それに合ったDIBを作るというのは転送の高速化テクとして有効かも知れません。言っても、ユーザーが多いんだから仕方ないという意味もありますが。いや、コンピュータのハードウェアは進歩したと言われていますが、3Dをやるにはまだ遅すぎます。えっ?3Dでゲームが動いてるじゃない?と言われれば、それはそうなんですが、いまの3Dのゲームは事前にほとんどの計算を終わらせてあります。よくて、関節の接点だけ動かせる程度です。服を風になびかせようと思えば、通例、服の格子点をとって、その格子点間に弾性バネを入れて物理シミュレーションを行ないますが、現在のプロセッサでは、こんなことをやっていたのでは到底、実時間内に計算が終わらないのです。女の子を歩かせて、その着ている服をこういうシミュレーションを行なって表示しようと思うと、PentiumIIIの1GHzでも、まったく間に合わないのです。大学時代にOpenGLでその手のシミュレーションを実際にやっていたやねうらおが言うんだから間違いありません^^もちろん、格子点の数を減らせばある程度、動かなくはないですが、あまり減らすと弾性バネなので振動し、発散しますし、満足のいく画像品質は得られません。リアルタイムに服を計算して動かす価値はあまりないでしょう...事前に計算してパターンで持っておくほうが、遥かに計算コストが低いからです。X−BOXがいかに秒間3億ポリゴン表示できようと、プロセッサのスピードがPentiumIIIの500MHz程度ならば、当然このような計算を実時間に行なわせることは不可能なのです。考えると、いまの3Dのゲームは、視点の変えられる紙芝居か、ムービーに過ぎません。3Dのハードを搭載していれば、3Dでポリゴンを出して動かせるのは当たり前ですし、プログラミング技術的には何も凄くはありません。加色合成や環境マッピングは見た目は派手ですが、ハードの力で出来るものにいまさら驚くこともないです。正20面体の障害物を交わしながら突き進むプラズマライン(こんなゲーム誰も知らんか...)の時代ではないんです。ハードでやってんだからポリゴンは動いて当たり前。データ作成には、それなりに苦労が伴いますが、それはプログラミング技術とは別の部分です。ゲームのフレームを支えるプログラミング技術は、10年も20年も前のものです。そこからほとんど前進していない。アイデアという面では、むしろ後退すらしています。某専門学校の3D科(そこの卒業生と話したことがあるのですが)では、2年でプログラミングの基礎から制作まで行ないます。専門学校だから、高卒生が対象なわけで、行列の回転すら出来るのか怪しい連中を相手に、ベクトルの足し算から教えるのです。2年で何が出来るというのでしょうか?しかし、それでも卒業生は、(一応は)業界でどうにかこうにかやっています。彼らはスキャンコンバージョンも知らないし、グローシェーディングのルーチンを自前で書くことも出来ない、3Dのライブラリを呼び出して辛うじてポリゴンを描画できるだけ(というか、それが出来るのも卒業生の一握り)ですが、その程度の薄っぺらい知識でも、どうにか食っていける。技術レベルは、理工系の大学卒業した少し頭のいい人間を連れてきて3ヶ月も教えれば達成する程度のものです。いう意味では、ゲーム業界、特にプログラマって、これでいいんかな〜とか思います。00/08/04私は連日連夜訪れるもんで、近くのコンビニのおばちゃんとフレンドリーになりました。昼間だと「こんにちは〜」とか声をかけてきてくれます。朝方だと「おっは〜」とか言ってくれます。それがまた、真昼間とか真夜中とかに行くもんで、どうも私はフリーターと思われているらしいのです。それは無理もありません。昨日は、レジで、私のこと、まじまじと見て、「生活大変そうやね、これつけといてあげるわ」と言って、消費期限切れかけのお弁当をくれました。忙しくて散髪に行けずにいる私の髪の毛がボサボサなのを見て、「この子は散髪するお金もないんだわ」と思われたに違いありません。いや、気持ちはありがたいんだけどね、すっごく。ところで、そんなこんなで、今日もそのコンビニに行ったところまたもやそのおばちゃんに出くわしてしまいました。会釈だけしたとき、「兄ちゃん、ここで働くか?」って言われました。アンタの3倍は稼いどるわ!とも言えないシャイなやねうらおは、「あのー、働きたいのはやまやまなんですけど、ボク、生活とか不規則なもんで」と言って、あたりさわりなく断ろうと思ったのが運の尽き。「それにボク、受験生なんですよ。東大の大学院の言語学科目指して頑張ってるです。雨も降ってきたの『も』は、雨以外の何を指すのかとか、人称は何故3つかだとか、日本語における動詞のテンスとアスペクトとか、そういう勉強をしています」とか適当なこと言って、その場からそそくさと離れて、パンだけ買って帰ろうと思ったとき本棚にあったヒカルの碁8巻と、最終兵器彼女の2巻が目にとまったのでした。ヒカルの碁はあとで立ち読みしたらいいけど、最終兵器彼女は買って帰ろう。思って、パンと最終兵器彼女を手にとってレジに直行。おばちゃんにまじまじと見つめられる。俺には、3ヶ月も早く誕生日プレゼントをくれる女がいるんじゃい!とも言えないし(誰や9ヶ月遅れのプレゼントやろ?と言ってるのは..)、とりあえず、貧乏苦学浪人生の振りに徹することに決めたやねうらおは、「ええ、いないんですよー」と調子を合わす。すると、おばちゃんからは信じられない言葉が。