タグ

2013年9月5日のブックマーク (7件)

  • ゆるアマクリエイターの日記 XNAの乗算済みアルファとLat式モデル

    わーい、更新忘れてて広告ついてたorz どうも、ウィルフレムです。 最近仕事であわあわしてます(まぁ、楽しいからいいんですがw) MMDXv2.03aリリースしました~ 修正箇所は ・Lat式ミクの表示が微妙に変になるバグの修正 以上です。 ……超手こずったw まぁ、実はXNAの「乗算済みアルファ」が原因だったんですが(^^; 切ったらアッサリ解決。 シェーダひっくり返してデバッグしてたの何だったんだwというぐらいのアッサリさ。 こんな話を見たらアッサリと分かった。 バグの根原因はLat式ミクの構造が乗算済みアルファと合わないことでした。 原因も含めて注意点として記述していきます。 まず、乗算済みアルファはどういうものかというのは 元XNA開発者のひげねこ氏のblogを見てもらうとして ここではポイントを絞って解説していきたいと思います。 乗算済みアルファは通常のアルファブレンディングと

    love0hate
    love0hate 2013/09/05
  • MMD on WebGL やっと Lat 式を表示できた - by edvakf in hatena

    MikuMikuStudio を作ってる chototsumoushin さんに、「culling がおかしいんじゃね?」的な助言をいただいたので、頑張ってみた。 ↓デモ。10月20日現在、Lat 式になってる。たぶんあとで標準モデルに戻す。「コッチミンナ」目をオンにしてあるので、どのアングルを向いてもこっちを見てくれる。 http://edv.sakura.ne.jp/mmd/ MacChrome で確認したら酷いことになってた… あとで直す。 Mac でもちゃんと見られるようになった。pow(0.0, 0.0) が GLSL で未定義なので、0.0だったとこを0.001にした。 ここから題。 アルファブレンディングについて この前シェーダーがほぼ完成したと書いた時は↓こんな感じ。 前やってたことは、まず全部の材質を drawElements して、次に cullFace(FRO

    MMD on WebGL やっと Lat 式を表示できた - by edvakf in hatena
  • モダンなOpenGLではテクスチャー周りがずいぶん綺麗になった - tuedaの日記

    OpenGL 3.3以降はテクスチャー周りがだいぶ整理されて使いやすくなった。 今までの苦労は何だったんだろうと思う。 一番大きな変化はテクスチャーがテクスチャーデータ(Texture Object)と、それをサンプリングするサンプラー(Sampler Object)の2つに分離したこと。 テクスチャーオブジェクトはglGenTextures()で作りバインドしてglTexImage2D()でデータを転送する。 glGenTextures (1, &texture); glBindTexture (GL_TEXTURE_2D, texture); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); それに対してサンプラーオブジェクトはglGenSampl

    モダンなOpenGLではテクスチャー周りがずいぶん綺麗になった - tuedaの日記
  • 行列関連のgl関数をなるべく使わないでやってみる - 三次元日誌

    スキニングの都合上glRotatefやglTranslatefを使わずに変換を実装する必要があるので下準備にこれらをglMultMatrixfで置き換えるテストコードを書いてみた。 さらにOpenGL3に準拠しようと思うとglMultMatrixfすらdeprecatedなので計算した行列をvertex shaderのuniform変数に渡してやらないといかん。 ↓deprecatedの山 http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml あと行列クラスを自前で実装しようかと思ったのだが途中でnumpyを使えることを思い出した。 http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/fastTour/pyLinear.htm というわけでスキニングの地均しに自前行列で

    行列関連のgl関数をなるべく使わないでやってみる - 三次元日誌
  • GLSLによるグーローとフォーンシェーディング

    今日は、GLSLによるグーローシェーディングとフォーンシェーディングを紹介します。グーローは頂点ごとに光源計算を行い、頂点の色を計算し、三角形の内部を色補間します。フォーンは三角形内部を法線補間し、画素毎に色を計算します。フォーンの方が重いのですが、スペキュラー等は綺麗になります。 OpenGLの光源計算 プログラムを紹介する前に、OpenGLの光源計算方法を簡単に説明します。OpenGL(DirectXでも同じですが)では、光源による物体表面の色は、主にdiffuse(拡散反射)とspecular(鏡面反射)から計算します。下の図に示すように、diffuseは光源ベクトルと法線ベクトルとの内積で計算されます。 一方、specularは光源ベクトル、法線ベクトル、視線ベクトルから計算されます。OpenGLの固定パイプラインによる光源計算(GLSLを使用しない光源計算)では、左下の図のように

  • OpenGL のはじめ方 (2) wgl | ホイール欲しい ハンドル欲しい

    Windows で OpenGL を使う方法がだんだんわかってきました。 DirectX ならとりあえず新しい SDK を入れれば終わりですが、OpenGL の場合は少々違います。 特別な SDK や lib が無くても、ドライバさえ対応していれば使うことができます。 敢えて OpenGL の各種ライブラリは使用していません。便利で容易に任せられる反面、中で何を やっているのか、最新バージョンを使うにはどうしたらいいのかがわかりにくかったからです。 (1) OS と OpenGL のやりとりは WGL が行う。 (2) Windows SDK には OpenGL 1.1 のヘッダ&lib のみ。最小限。 (3) 新しい OpenGL に対応している GPU ライバをインストールする。 (4) ヘッダファイルは OpenGL Registry からダウンロードできる。 (5) wglGetP

  • OpenGL のバージョンについて

    OpenGL は、かつては上位互換のライブラリでした。 OpenGL 3.0 までは、以前のバージョンに含まれる標準機能は、以降のバージョンで使用可能です。 例えば、OpenGL 1.1 の頂点配列機能は、OpenGL 1.2 以降でも使用できます。 つまり、このことは OpenGL 2.X は、OpenGL 1.X の機能を全て含むことを意味しています。 OpenGL 1.2 以降では、ARB_imaging サブセットがオプションで使用できる環境もあります。 永らく上位互換を維持してきた OpenGL ですが、 肥大化した OpenGL の仕様をシェイプアップするために、 OpenGL 3.0 では過去のバージョンとの互換性に関して見直しが行われ、 将来削除が予定される非推奨機能がまとめられました。 これらは冗長なものであったり、シェーダで置き換え可能な機能です。 OpenGL 3.1