Graphtoy v0.4 by Inigo Quilez (feedback from Rafæl Couto, Florian Mosleh, Nicholas Ralabate, Rich Eakin and Jason Tully). If you find Graphtoy useful, please consider supporting it through Patreon or PayPal.
バージョンアップ 自宅の iMac の OS を Snow Leopard にしました.OS をバージョンアップをすると定常状態に落ち着くまでしばらくかかるんですけど, 今回は更新前と全然変わりなく安定して動いています. いやぁ起動も速いし Firefox もサクサク動くし, Canvas X も Rosetta で一応動きます (日本語の入力ができないけど). あと, このブログを動かしていたマシン (Celeron 1.4GHz, 箱は10年物!) も, 元 M 君マシン (Athlon XP 3200+) に置き換えました. だいぶ軽くなりました. こいつの OS も VineLinux の 5.0 に更新したいんですが, なかなか取りかかれません. tDiary も 2.2.2 に更新したいんですが, なんだかエラーが出るのでちょっとペンディングしています. クリッピング空間 レン
レイトレーシング レイトレーシングとは コンピュータによって3次元の画像を計算するアルゴリズムの一方法である。 簡単に考え方を述べると、現実の世界では太陽や蛍光灯から出た光が 物体に当たって反射し、その反射した光が人間の目に入ってものを見ることができる。 レイトレーシングではそれとは逆に目から視線が出て、その視線が物体に 当たった時、その物体が見えていると考える。 そしてその視線が物体に当たった点に当たっている光の強さの程度に よって、その点の色を決定する。 3次元の画像を生成するためのアルゴリズムは他にも代表的なものとして、 スキャンライン、zバッファ などがある。 レイトレーシングは例えばスキャンラインやzバッファと比べて次のような特徴がある。 長所 美しい画像を作りやすい。 透過や屈折の効果を出すことができる。 アルゴリズムがシンプルでわかりやすい。 消費するメモリーが少ない。 短所
はじめに テッセレーションシェーダに関する日本語の記述サイトがほぼなかったので 備忘録もかねて記述していこうとおもいます。主に基礎的な部分なので、曲面どうのこうのということは今回は見送ります。 opengl4.0では、新たにテッセレーションシェーダを扱うことができるようになっている。 ポリゴンを自動で分割してくれる便利なシェーダだ。現状4角形と3角形でできることを確認しているけど今回は主に3角形での説明にする。 テッセレーションシェーダの主な役割はこんな感じ テッセレーション制御シェーダ:1パッチの分割数を決める。 テッセレーション評価シェーダ:分割したポリゴンの頂点位置等を決定する 図1 このポリゴンモデルを 図2 このように分割してくれたりする。 シェーダの処理される順番としては、 1.バーテックスシェーダ 2.テッセレーション制御シェーダ --------ポリゴン分割--------
by Patricio Gonzalez Vivo and Jen Lowe This is a gentle step-by-step guide through the abstract and complex universe of Fragment Shaders. Contents About this book Getting started What is a shader? “Hello world!” Uniforms Running your shader Algorithmic drawing Shaping functions Colors Shapes Matrices Patterns Generative designs Random Noise Cellular noise Fractional brownian motion Fractals Image
OpenGL。その単語の響きだけで素晴らしく魅力的に思える 3D コンピューターグラフィックスライブラリは、これまで何人もの駆け出しゲームプログラマーに幾度と無く挫折を味わわせてきた。「ゲーム作るならやっぱり高速に描画できる OpenGL でしょ。でも自分が作るゲームに 3D はいらないし、しかも難しそうだし、別に 2D 描画だけできればいいや」 と、軽い気持ちで手を出したのが運の尽き、世の中そんなに甘くはなかった。OpenGL というその難攻不落城は私達の進む道を阻むように高々とそびえ立っている。 OpenGL がコレほどまでに取っ付きにくいのは 気軽に Hello World できない からなんじゃないかと思う。OpenGL の場合だとそれは何かしら 1 つの図形を表示することにあたるのかな。でもたったそれだけなのに、覚えることが山ほどありすぎて全然本題にたどり着くことができないし、O
Special Thanks to @hagat and @teehah for reviewing my articles! 近年、WebGLに流行の兆しが出てきました。WebGLとは、ブラウザに何らプラグインをインストールすることなく、JavaScriptよりGPUを使用した3Dの表示を可能とする技術です。プラグインのインストールが必要ないとはいえ今までは対応ブラウザが少なくあまり実用的ではありませんでしたが、先日のiOS8で正式に対応されたことでモバイルブラウザにおいて対応率が跳ね上がり、スマートフォンにおいてブラウザベースで3Dのゲーム等を作れる可能性が急激に高まりました。 今回WebGL Advent Calendarの一環として、生WebGLで3Dのオブジェクトを表示するところまで挑戦してみます。WebGLにはthree.jsを始めとして有用なライブラリがたくさんあり、大抵の場
Super Incorrect Translation "The Direct3D 10 System" (2006 Aug. 2)
OpenGLでGPUスキニング【行列パレット編】からの続き。 前回はボーン行列をMatrix配列でGLSLへ渡してスキニングをしていましたが、レジスタ数の上限により一定数を超えるボーンは渡せない欠点がありました。 今回ではその問題を解決すべく、頂点テクスチャを使ってスキニングをします。 Vertex Texture Fetch(バーテックス テクスチャ フェッチ) 日本語名:頂点テクスチャ 頂点シェーダ内からテクスチャの読み込みが出来る機能のこと。 色データ(0~255)以外の情報を格納することができ、定数レジスタより大量のデータを扱うことが可能。ピクセルシェーダでのテクスチャ読み込みと同様、自由にテクスチャ座標を指定でき、複数回読み込むことが出来ます。 CPUで時間の掛かる演算処理をGPUで処理させる時のデータ受け渡しに使われたりします (アプリケーション←→GPU間でのデータのやり取り
Build and Share your best shaders with the world and get Inspired Latest contributions: "Drawing a circle again bruh" by defnixx 22 minutes ago, "RWMusic toolbox" by RoosterWho 57 minutes ago, "Iridescent Spirals" by anej 57 minutes ago, "vortex knot flow field" by Boogaloo 1 hour ago, "Gaussian-ish airglow approx." by FordPerfect 1 hour ago
現代的なオブジェクト指向プログラミングから入ったプログラマーにとっては、OpenGLは時に、摩訶不思議な振る舞いをするように感じることがあります。 それもそのはず、教科書的なOOPではグローバル変数などは唾棄すべき禁忌の1つとされていますので、そもそもグローバル変数が禁忌とされた理由自体を知らないか、それは知っていても実際にグローバル変数に起因するバグに遭遇した経験のないプログラマーも増えてきているかもしれません(まあ、staticやらsingletonやらでグローバル変数の二の舞になった事はあるかもしれませんが)。 ところでOpenGLの関数は、グローバルなグラフィックリソースを弄ります。それも何種類も。 つまり、OpenGLわけわからん、と感じるプログラマーは、単純にグローバル変数を使ったプログラミングに慣れていないだけかもしれません。 そこで一旦、OpenGLの仕組みについてまとめて
組み込み向け3DグラフィックスAPIの最新版「OpenGL ES 3.0」が登場 ―― デスクトップ向けグラフィックスを猛追する組み込みグラフィックス 大渕 栄作 OpenGL ES(OpenGL for Embedded Systems)は,携帯電話や携帯型ゲーム機,タブレット端末などの情報系組み込み機器を中心に普及している3Dコンピュータ・グラフィックス用APIの標準規格である.2012年8月には,最新版の「OpenGL ES 3.0」が発表された.ここでは3DグラフィックスIP(GPU)コア・ベンダの開発技術者であり,Khronos GroupによるOpenGL ESの標準化にもかかわっている著者が,OpenGL ES 3.0の概要について解説する.(Tech Village編集部) グラフィックス技術およびインタラクション技術に関する世界最大の学会/展示会である「SIGGRAPH
四元数(クォータニオン)でトーラスを回転 なかなかGLSLのサンプルに到達できないのですが、GLSLの前に、モデルをグリグリ動かすことはやっておいた方がいいと思い、四元数(クォータニオン)でモデルを回転するサンプルを作成しました。クォータニオンについては、ネット上にいろいろ解説がでており、私はそれよりもきちんと説明できる自信はないのですが、簡単に紹介します。 クォータニオンは、一つの実数部と三つの虚数部(みたいなもの)i, j, kから成る数で、次のように表記します。 ここで、i2 = j2 = k2 = ijk = -1 が成り立ちます。3次元の座標(x, y, z)は、クォータニオンを使用して次のように表現します。 また、任意軸 (ax, ay, az) 回りのθ回転は、次のように表すことができます。 この時、3次元座標pの任意軸回りの回転qは、次のような計算が成り立ちます。 ここで、
<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABkCAYAAADDhn8LAAAgAElEQVR4Xry9B5idV3Wvv496l6b3mTMzmlGZkWY00siS1UbVtiRbrpJs2bIs29iWjbFDMUbGFsWATTMlgKimmZjQEgLEJAFDKAmEUBISckkxCfcmhJQbSG/n/757n2/OOVOkGfJ/7n6erTOjOd/+vm+XtX7rt9ZeOxdCKFBHSy4XQueyENqXhtC6JISWJdWhbUldyC9rCD3VzaG3oTWEjs4QBrtCWPNPXHd18JqsnBgM4fjA3rCz74IQ1vaFsLExhKq/4c+PUb9MvYX6zuI1z+fnNdTjobsqhD/5+1fz82rq26m/VP5Y5/158dwQzox0
今日は、GLSLによるカートゥーンを紹介しようと思います。割と簡単にでき、それなりに見栄えがするからです。その応用として、輪郭線も描画します。 カートゥーンの原理 カートゥーンはセルアニメ調のレンダリングです。左下の図に示すように、頂点vにおいて、法線と光源ベクトル(頂点から光源へのベクトル)との内積(照度)を、右下の図のようなテクスチャのs座標に当てはめることで簡単に実現できます。 更に、次の図の左のように、視線ベクトルと法線の内積を考えると、輪郭となる部分はほぼ0になります。そのため、その内積をt座標に割り当てることで、輪郭線を実現できます。 s座標もt座標も単位ベクトル同士の内積で計算できますが、その範囲は-1~1になるため、テクスチャマッピング(glTexParameterによる指定)をクランプに設定する必要があります。 バーテックスシェーダ(頂点シェーダ) 今回は、頂点シェーダで
入力 E (eye):カメラ (視点) 位置 (カメラ座標系の原点でなくてもよい.) C (center):注視点 up:カメラの上方向を指定するベクトル カメラに対して前後に傾いていてもよいが,視線と平行であってはならない. OpenGL や DirectX のソースコードで up ベクトルをワールド座標系の真上方向 (0, 1, 0) に固定しているものをたまに見かけるが, これだとカメラを真上や真下に向けたときに何も見えなくなってしまう. (up と f が平行になるので,ビュー変換行列が定義できない.) OE (origin of eye):カメラ座標系の原点 P:任意の点 出力 カメラ座標系の正規直交基底 f (forward):カメラ前方向 (視線方向) の単位ベクトル u (up):カメラ真上方向の単位ベクトル r (right):カメラ右方向の単位ベクトル その他 (中間結
左下原点のテクスチャ座標を用いたサンプル テクスチャ座標やウィンドウ座標をOpenGL系に統一したため、確認も含め、次のようなテクスチャを正方形に貼り付ける簡単なプログラムを作成しました。 まず、bmpファイルの読み込みです。実はbmpファイルも左下から順に格納されています。そのため、loadbmp.cのloadBMP関数内で、次のように格納されている順に読み込みます。もちろん、futil.hでの#defineマクロでOPENGL_IMAGE_COORDINATEは(1)に定義されています。 : : 途中略 : : switch(bpp) { case 8: /* 8 bits/pixel */ /* カラーマップ読み込み */ fseek(fp,54,SEEK_SET); fread(&palette[0], sizeof(RGBQuad), 256, fp); #if OPENGL_I
3Dプログラミングの基礎知識(1) はじめに 主にiPhone/AndroidからOpenGL ESを使って3D表現を行う場合に必要となる基礎知識についてまとめていきたいと思います。 基礎の基礎から説明して行くため、言語や3Dライブラリ(DirectX/OpenGL)に依存しない情報が多くなります。OpenGLに限らず「C++ + DirectX」などの環境で開発を行う人もどうぞ。 内容 5回ぐらいに分けて以下のような内容を書いていきたいと思います。 モデルを構成する頂点情報、面情報 画面に描画されるまでの流れ、平行移動・回転・拡縮行列(ワールド変換) カメラ、Zバッファ 法線、ライティング 頂点シェーダ、ピクセルシェーダ(フラグメントシェーダ) 座標系 3D表現を行う為には3次元の座標系をどのように定義するか決める必要があります。 2Dの場合はX軸、Y軸で座標系を表しますが、3Dの場
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く