スクリプトからメモリ上のTexture2DにSetPixelsを行って法線マップ画像を生成し、NormalDiffuseシェーダーのNormalMapとして設定したい時にちょっとひっかかったので、そのお話。 基本的にUnityではGL系で一般的なNormalmapの形式(チャンネルの割り振りがRGBA=XYZW)に対応していますが、一度NormalmapとしてTextureをインポートしてしまうと、内部的には環境依存で暗黙のフォーマット変換を受けているケースがあります。 DXT5nmというフォーマットに変換されるかも Creating runtime normal maps using renderToTexture UnpackNormal(fixed4 packednormal) role ? ウチのRadeon挿したWin機では変換されてました。DXT5nはGA(緑と赤、軸で言えばY
以下はUnity4.3.0f4、DX11で行っています。 1回のレンダリングで複数の値を出力するMRT(MultipleRenderTarget)をやってみます。 手順は 1.複数の値を出力するシェーダを作成する(SurfaceShaderではなく、展開されたシェーダじゃなきゃ駄目っぽい。やり方が今のところわかりません。) 2.メインカメラとは別のカメラを作成し、MRTレンダリングを行うスクリプトをくっつける。 (複数出力する専用シェーダが必要になるため、メインカメラの通常レンダリングにバッファを追加して……ってのは無理みたい) です。 まずは複数の値を出力するシェーダから見てみます。 これはUnityでシェーダを新規作成し、#pragma debugで展開されたシェーダからコピペしてきて作ったものです。 Shader "Custom/TestShader" { Properties {
「こちら」の記事で説明したように,GeForce 7800 GTX(以下7800 GTX)は開発コードネーム「NV47」として開発が進められてきたが,プロジェクト後半に「G70」と改められた経緯がある。要するに,7800 GTXはNV4x(=GeForce 6シリーズ)の改良版というわけだ。 では,7800 GTXは,GeForce 6シリーズと比べて何が変わったのだろうか。今回は,GeForce 6シリーズ最上位となるGeForce 6800 Ultra(以下6800 Ultra)と,前後編に分けて細かく比較していきたいと思う。 まずは全体を大づかみしておこう。最上段のブロック「HOST/FW/VTF」は,システム側からの入力を意味している。HOSTはCPUからの入力,FWは「FirstWrite」の略で,グラフィックスチップがメインメモリから直接データを読み込める仕組みのこと。VTFは
Super Incorrect Translation "The Direct3D 10 System" (2006 Aug. 2)
Unity には、定義済みの変数やヘルパー関数を呼び出すために シェーダプログラム で使用できるいくつかのファイルが含まれています。これは以下のような標準的な #include ディレクティブで行われています。 CGPROGRAM // ... #include "UnityCG.cginc" // ... ENDCG Unity のシェーダー include ファイルは .cginc 拡張子がつけられていて、以下が含まれています。 HLSLSupport.cginc - ヘルパーマクロやクロスプラットフォームのシェーダーコンパイルの定義 (自動的に含まれます)。 UnityShaderVariables.cginc - 一般的に使用されるグローバル変数 (自動的に含まれます)。 UnityCG.cginc - 一般的に使用される ヘルパー関数。 AutoLight.cginc - ライテ
3Dアプリの開発にはまずモデルの読み込みが必要となります。 Metalにはレンダリング機能はあるものの、ローダは備わっていません。 そこで今回はボーンアニメーションに対応したモデルローダ作成のノウハウ(特にMetalの特性にどう対応したか)を紹介したいと思います。 ソースコードはこちらです: http://log.blog.klab.org/support/20140925/Blacksmith-bone_animation_sample.zip メインとなるファイルはBSModelとBSRendererです。 BSModelはモデルデータの管理やボーン計算を担当し、BSRendererはBSModelから頂点データやテクスチャ、ボーンマトリックス等を受け取ってレンダリングを行います。 まずはじめにモデルファイルのパースが必要となります。 3Dモデルのファイルフォーマットは世の中にいくつも
最近、ライティングの勉強がてらシェーダを触っていたがUnity製のSurfaceShaderではうまく表現できないことがあったため対策した。 できなかったこと・・・ カスタムライティングモデルを作成して2諧調に分けても複数ライトを配置すると各ライトが適用された後にブレンド(球面調和?)されるため、通常のライティングと見た目あまり変わらなくなる。 まず通常のトゥーンにて2諧調に分けた場合 ライト1個(左) ライト1個(右) ライト2個(左右) わかりやすいようあえて片側(右)のライトのintensityを上げてあるが右のライトからの影の中に左側のライトの光がブレンドされ、グラデーションができている。これだと諧調がうまくわかれてくれないため特にキャラクターモデルなどの曲面の多いモデルだと顕著に出てトゥーンに見えない。 ならキャラクターモデルを貼れよと言われるかもしれないが絵心とモデリング技術が
通常ユーザが編集するSurface Shaderは、画面上に見える部分の色や形を変えることが出来ます。しかし、シェーダが使われるのは直接画面に見える部分だけではありません。 1.シャドウマップレンダリング用シェーダ(影を落とすためのシェーダ) 2.影かどうか判断するためのシェーダ(影を受けるためのシェーダ) 3.ディファードレンダリングやイメージエフェクトで使われる深度、法線を描画するためのシェーダ などです。 なお、これらのシェーダは深度や法線など、出力が固定的です。 (色に比べ、深度や法線をカスタマイズすることは稀だからです) そのため、シェーダのジャンルごとに一つにまとめられています。 上記1のシェーダではシャドウマップに描きこむための深度を出力しますが、例えば Diffuseシェーダのオブジェクトと、BumpedDiffuseシェーダのオブジェクトは色が違うだけで形は同じなので、同
拡散色GバッファZバッファ法線Gバッファ最終的な合成結果 遅延シェーディング (ちえんシェーディング、英: Deferred Shading、ディファードシェーディング、遅延レンダリングとも) は2次元のスクリーンスペース(画面空間)上でシェーディング(陰影計算)を行なう技術である。遅延と呼ばれるのは最初にジオメトリを処理する頂点シェーダーからピクセルシェーダーに至るまでの第1パスでシェーディングが実際に実行されていないからである。かわりにシェーディングは第1パスの結果を使ってレンダリングされる第2パスまで「遅延」される。 遅延シェーダーの第1パスでは、最終的なシェーディングに必要とされるデータがいったん収集されるのみとなる。各表面の位置や法線、マテリアルといった幾何学情報は、1組のテクスチャとしてジオメトリバッファ (英: Geometry Buffer, G-Buffer) にレンダリ
レンダーパス フォワードレンダリング では、ForwardBase と ForwardAdd パスが使用されます。 ディファードシェーディング では、Deferred パスが使用されます。 古い (非推奨) 頂点ライティング では、Vertex、VertexLMRGBM、VertexLM パスが使用されます。 上のどの場合でも、影 や深度テクスチャをレンダリングするために、ShadowCaster パスが使用されます。 フォワードレンダリングパス ForwardBase パスは、アンビエント、ライトマップ、メインのディレクショナルライト、重要でない (頂点/球面調和) ライトを一度にレンダリングします。ForwardAdd パスは、追加のピクセルごとのライトに使用されます。このようなライトによって照らされるオブジェクトごとに 1 回の呼び出しが行われます。詳細については、フォワードレンダリ
更新情報 (2017/04/20)トップページを整理しました (2017/04/23)Blender×Unityワークフロー:ミラーモディファイアとシェイプキーを共存させる(+左右に分離) - UnityShader 入門 (2017/04/30)Mosketchメモ、ショートカット一覧を投稿しました 入門コンテンツ スザンヌで学ぶUnityのTransform 1から始めるUnityShader(全6回) アニメ調レンダリングで学ぶUnityShader 実用コンテンツ Blender×Unityワークフロー Mosketchメモ 厳選リンク集 SurfaceShadeの記述 https://docs.unity3d.com/ja/current/Manual/SL-SurfaceShaders.html ビルトインシェーダ変数 https://docs.unity3d.com/ja/c
Ending soon $20 SaleSave on must-have assets for your next project. Don’t miss out – there are 200+ deals waiting for you.
さて、先ほど謎の問題にぶち当たりました。 昨日設定したSVNでMacからUnityを起動。 すると・・・ Σ(゚д゚lll)ピンクー!!! そして Σ(゚д゚lll)エラー!!! ・・・(((;-д- )=3ハァハァ いや、待てよ、この症状は見たことある。 ■強火で進め http://d.hatena.ne.jp/nakamura001/20120404/1333554280 ふむふむ。 >調べてみると改行が問題だったみたいです。改行がCRだとNGみたいです。皆さんはご注意を。 なるほど。つまり改行コードが問題だ、と。 これなら簡単に直せそうだ。よし、エラーが出てるデータをWindowsで確認してみよう。 ・・・ ;y=ー( ゚д゚)・∵. ターン ちゃんとなっとるがな! と、なるとMacに持ってった時点で・・・? というわけでOpen! ・・・⊂(´<_`⊂⌒`つ≡≡≡≡≡≡≡ズサー ・
最近Unityを触っています。ShaderLabでiOS向けシェーダーを書いているのですが、その中で気づいたことなど書いてみます。 ●モバイル向けシェーダーの心得 各種Unity勉強会に出ましたけど、iOS等モバイル向けシェーダーではリアルタイムライティングはご法度ということ。普通はバーテックスシェーダー内でライトマップを参照したり、ライトプローブを参照して色を取ってきてフラグメントシェーダーで色を載せるということをやるようです。 いい例となるのがShadowGunのシェーダーサンプル。このアプリではリアルタイムライティングは完全に行っていませんでした。背景など動かないものはライトマップの参照がメイン。カメラからの相対ベクトルでの擬似スペキュラーライティングを若干与えているので、これについては平行光源での頂点ライティングと同じくらいの処理負荷はかかるものと思われます。キャラでは、ライトプロ
特殊なライティングテクニック 前回はフレームバッファへのレンダリング結果に対して、ブラーフィルターを適用して全体にぼかし処理を掛ける方法を解説しました。フラグメントシェーダを使ってピクセルごとに処理することで、一度レンダリングした結果にエフェクトを掛けることが可能となり、様々な効果を演出できます。ぼかし処理はその一例でしかありませんが、シェーダの使い方などを参考にしていただけたらと思います。 さて、話は変わって今回は、バンプマッピングをやってみたいと思います。 バンプマッピング(bump mapping)は一般に、法線マップなどを用いることによってあたかも凹凸があるかのように見せることができるライティングテクニックです。バンプマッピングを活用すると、少ないポリゴン数のモデルであっても高い表現力を得ることができるようになります。 と、言葉で説明されてもいまいちわかりにくいですね。 たとえば、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く