unityまわり話題

なんかココ最近、ユニティーちゃんもハイエンド機向けに頑張りだした模様?

5.6のバージョン名が多い気がする。

tsubakit1.hateblo.jp

 

CPUコアを目一杯使うネイティブレンダージョブスとC#ジョブシステム

ネイティブレンダージョブ機能の実装で描画速度が2.5倍になるそうで。とりあえずPS4向けに。

あとC♯ベースのジョブシステムによって、複数コアによる制御が出来るようになるみたいです。

 

twitter.com

 

tsubakit1.hateblo.jp

 

Adamさんのアセットまわりも公開されてるとの事

Adamデモの幾つかのライトがオープンソースで公開

github.com

 

 

 

CRI ADX2 LE

CRI ADX2 LE

www.cri-mw.co.jp

qiita.com

qiita.com

・3番目のリンクのユニティーパッケージで床コリジョンが付けてあるので

それを見ながら、使い方を見てみよう。

・OculusAudioPack01も素晴らしいSEが沢山入ってる。

・商用で使う方は、ライセンス等の確認をしましょう。

sonoは就活用データーで使うだけなので。詳しく調べてないです。

 

 

 

MARI Non-commercial: free 3D texture painting software

MARIに非商用版が出てたんですね。

www.thefoundry.co.uk

ゲームエンジンUnityUEで非商用版が無料になってたりで、

DCCツールもBlenderがあったり、

テクスチャー作るのにはGimpがあったり、

個人でゲームを作って、製品版として売り出せるまでになれば本来ライセンスを買う、予定の無かった人がお客様になりライセンスを買うとか、

ソフトを使える人が増えたツールは会社で商用ライセンスを買われる様になるからシェア拡大になるし、まさにWIN WINの関係

2大巨頭もウカウカしてられないですね。

 

 

 

Shader

https://unity3d.com/jp/get-unity/download/archive

※こちらのダウンロードを左クリック、ビルトインシェーダーからスタンダードシェーダーの中身を見ながらメモ

docs.unity3d.com

Unity のシェーダーは、次の 3 つの方法のいずれかで記述

docs.unity3d.com

 

・Properties   Inspectorで表示

・Subshader    

各シェーダーは SubShader のリストから構成されます。少なくともひとつが必須,

Unity はサブシェーダーのリストから、エンドユーザーのマシンでサポートされる最初のサブシェーダーを選択

・FallBack

もしサポートされるサブシェーダーがない場合、Unity は Fallback シェーダー の使用を試みる。

 

//←はコメントです。

//シェーダーの名前 /を付けると階層になる

Shader "sono/Standard_test"
{

f:id:SonoBlog:20160718234152p:plain

//次にProperties

{}  

・Inspectorで表示される所 パラメーターの一覧を定義できる

docs.unity3d.com

 

//よくわかってないけど、ユニティーのメタリックセットアップをインプットて事?

 CGINCLUDE
        #define UNITY_SETUP_BRDF_INPUT MetallicSetup
    ENDCG

 

//SubShader   ここがメインかなぁ~

 

Tags

Tags ブロックでは「いつ」「どのように」レンダリングを行うかの指定を Key-Value の形式で与える

Pass はタグを使用していつどのようにしてレンダリングエンジンによりレンダリングすべきかを指定

docs.unity3d.com

Pass ブロックの中には色々な命令を記述できる

(Cull  ZTest  ZWrite  Blend  ColorMask   Offset   etc・・・)

docs.unity3d.com

CGPROGRAM 〜 ENDCG

サーフェイスシェーダは、このブロック内に記述

最初の行にある pragma 文は、サーフェイスシェーダをどのようにコンパイルするかを指示

 

複数のシェーダープログラムのバリアントを作る

#pragma shader_featureとか#pragma multi_compile  etc

docs.unity3d.com

■#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 

組み込みのショートカットのほとんどが、かなり多くのシェーダーバリアントをもたらします。それらが必要ないことを分かっている場合

 

CgNVIDIA が開発したシェーダ言語

d.hatena.ne.jp

http.developer.nvidia.com

 

HLSLマイクロソフトが開発した Direct3D API 用のシェーダ言語

※HLSL は NVIDIA と共同で開発したものなので言語的には Cg に似ている

docs.unity3d.com

 

シェーダーのロード時間を最適化

docs.unity3d.com

 

参照

tips.hecomi.com

-------------------------------------------------------------------------------------------------------

用語

シンタックス:構文規則

 

#define  

機能 :文字列の置き換え

書式 :#define <文字列1> <文字列2>

// #define   はプリプロセッサ 

ソースプログラムをコンパイルする前に、ソースプログラムに対して行われる前処理を プリプロセス と呼ぶ。このプリプロセスを行なうプログラムのことを プリプロセッサ と呼ぶ 

 

 ・バリアント(Variant)

どのような型のデータでも格納できる特殊な型

Variant型の変数は代入時に代入する値のデータ型がチェックされ、それに合うデータ型が自動的に選択される

“variant”は「異なる」「多様な」などの意味を持つ英単語

 

備考

 

サーフェースシェーダーの例

docs.unity3d.com

 ※私、底辺デザイナーですのでプログラムはズブの素人。自分用メモ