unityまわり話題
なんかココ最近、ユニティーちゃんもハイエンド機向けに頑張りだした模様?
5.6のバージョン名が多い気がする。
CPUコアを目一杯使うネイティブレンダージョブスとC#ジョブシステム
ネイティブレンダージョブ機能の実装で描画速度が2.5倍になるそうで。とりあえずPS4向けに。
あとC♯ベースのジョブシステムによって、複数コアによる制御が出来るようになるみたいです。
なんと、Octane RendererがUnityに!5.6に統合されて誰でも使えるようになります! pic.twitter.com/jMZB4hNrsP
— ユニティ・テクノロジーズ・ジャパン (@unity_japan) 2016年11月1日
Unity5.6ではゲームオブジェクトのTransformも劇的に高速化。デモでは20,000匹の魚を個々のゲームオブジェクトで生成してフルメッシュでレンダリングしてもヌルヌル動ている。 https://t.co/pm8dSCLlHQ @YouTubeさんから
— Helements (@HeLEMeNts) 2016年11月2日
Adamさんのアセットまわりも公開されてるとの事
Adamデモの幾つかのライトがオープンソースで公開
CRI ADX2 LE
CRI ADX2 LE
・3番目のリンクのユニティーパッケージで床コリジョンが付けてあるので
それを見ながら、使い方を見てみよう。
・OculusAudioPack01も素晴らしいSEが沢山入ってる。
・商用で使う方は、ライセンス等の確認をしましょう。
sonoは就活用データーで使うだけなので。詳しく調べてないです。
MARI Non-commercial: free 3D texture painting software
Unity Standard Shaderを両面表示に
SubShaderのPassの中にCull Offと書く幾つかPassがあるかと思うのでとりあえず、全部に入れてみた。
Shader
https://unity3d.com/jp/get-unity/download/archive
※こちらのダウンロードを左クリック、ビルトインシェーダーからスタンダードシェーダーの中身を見ながらメモ
Unity のシェーダーは、次の 3 つの方法のいずれかで記述
- Surface Shader
- 頂点シェーダーとフラグメントシェーダー
- 固定関数シェーダー
・Properties Inspectorで表示
・Subshader
各シェーダーは SubShader のリストから構成されます。少なくともひとつが必須,
Unity はサブシェーダーのリストから、エンドユーザーのマシンでサポートされる最初のサブシェーダーを選択
・FallBack
もしサポートされるサブシェーダーがない場合、Unity は Fallback シェーダー の使用を試みる。
//←はコメントです。
//シェーダーの名前 /を付けると階層になる
Shader "sono/Standard_test"
{
//次にProperties
{}
・Inspectorで表示される所 パラメーターの一覧を定義できる
//よくわかってないけど、ユニティーのメタリックセットアップをインプットて事?
CGINCLUDE
#define UNITY_SETUP_BRDF_INPUT MetallicSetup
ENDCG
//SubShader ここがメインかなぁ~
Tags
Tags ブロックでは「いつ」「どのように」レンダリングを行うかの指定を Key-Value の形式で与える
Pass はタグを使用していつどのようにしてレンダリングエンジンによりレンダリングすべきかを指定
Pass ブロックの中には色々な命令を記述できる
(Cull ZTest ZWrite Blend ColorMask Offset etc・・・)
CGPROGRAM 〜 ENDCG
サーフェイスシェーダは、このブロック内に記述
最初の行にある pragma 文は、サーフェイスシェーダをどのようにコンパイルするかを指示
複数のシェーダープログラムのバリアントを作る
#pragma shader_featureとか#pragma multi_compile etc
■#pragma
shader_feature
シェーダーの未使用のバリアントがゲームのビルドに含まれない
■#pragma
multi_compile
のショートカット
multi_compile_fwdbase
ForwardBase(Forward Rendering ベース)pass 種類で必要とされるすべての変異体をコンパイル
:変異体は、異なるライトマップタイプやシャドウをオン/オフに切り替える主要な異なるライトで対処
multi_compile_fwdadd
ForwardAdd
(forward rendering additive) の pass タイプをコンパイル、
(Directional、Point light、Spot)のライトを処理するためのバリアントとクッキーテクスチャによるバリアントをコンパイル
multi_compile_fwdadd_fullshadows
上記と同じですが、ライトがリアルタイムシャドウをつけるための機能も含まれている
multi_compile_fog
異なるフォグ(霧)の種類(off/linear/exp/exp2)を処理するいくつかのバリアントに展開
■
#pragma skip_variants
組み込みのショートカットのほとんどが、かなり多くのシェーダーバリアントをもたらします。それらが必要ないことを分かっている場合
Cg は NVIDIA が開発したシェーダ言語
HLSL はマイクロソフトが開発した Direct3D API 用のシェーダ言語
※HLSL は NVIDIA と共同で開発したものなので言語的には Cg に似ている
シェーダーのロード時間を最適化
参照
-------------------------------------------------------------------------------------------------------
用語
シンタックス:構文規則
#define
機能 :文字列の置き換え
書式 :#define <文字列1> <文字列2>
// #define はプリプロセッサ
ソースプログラムをコンパイルする前に、ソースプログラムに対して行われる前処理を プリプロセス と呼ぶ。このプリプロセスを行なうプログラムのことを プリプロセッサ と呼ぶ
・バリアント(Variant)
どのような型のデータでも格納できる特殊な型
Variant型の変数は代入時に代入する値のデータ型がチェックされ、それに合うデータ型が自動的に選択される
“variant”は「異なる」「多様な」などの意味を持つ英単語
備考
サーフェースシェーダーの例
※私、底辺デザイナーですのでプログラムはズブの素人。自分用メモ