SubstancePainter1.5を試してみた
半年以上SubstancePainterアップデートしていなかったので早速アップデートしてみた。
相変わらず日本語情報が少ないので公式の動画を三つくらい視聴。
変わったところや気になった機能をまとめてみた。
SmartMaterialがやばい!
後述します。
sbsarファイルの管理が楽になった。
SettingのShelfの項目にフォルダを指定するとMaterialなどのカテゴリごとにフォルダを自動生成してくれるので、そのフォルダの中にsbsarファイルをぶち込めばOK。フォルダが断層になっていても問題なく参照してくれるのがGood!
日本語に対応。
NormalMapが「通常マップ」ってΣ
「法線マップ」でしょ!
日本の代理店とかから指摘がいかないのかなぁ・・・。
レイヤーやマスクにエフェクトがかけられるようになった。
SDの強力なジェネレーターがかけられるのもやばいんだけど、その上からペイントエフェクトで手軽に手直しできるのがかなり便利ですねこれ。以前だとレイヤー構造が複雑になりがちだったので便利です。
あとColorSectionEffectが神です。SDでMultiMaterialBlendノードを利用する必要がなくなりました。というかSubstancePainter一本でテクスチャを作成するワークフローに変更できそうです。
以前できなかった複数マテリアル(UVマップ)を持ったモデルのサポートや、ベイク種類の増加、テクスチャの合成方法も増えてるし、ビューアの強化等 ほんと至れり尽くせり。
全体を通して機能がかなり増えていて別ソフトになってましたが、流石はAllegorithmic社さん UIが洗練されているのでほとんどマニュアルなしで使えました。(3D初心者の方やDesignerの方を触ったことない人がいきなり操作できるかどうかと聞かれると疑問ではありますが・・・。)
今後も期待できる内容で大満足のアップデートだったと思います。
なんか思ったより長くなったのでSmartMaterialについては明日書きます。
PBRShader for UnityTerrain
結論から言うと恐らく現状ではPBR対応のサーフェイスシェーダーをTerrainのCustomShaderとして利用することはできない
http://forum.unity3d.com/threads/terrain-pbr.276734/
Unity Technologiesによると公式にて近日中に対応予定。とのこと。
PBRに拘らなければCustomShaderを適用したMaterialをTerrainの設定画面から指定することができた。
以下は角度によってテクスチャを自動で切り替えるシェーダーを適用した例
ただしTangentVectorが取得できない等Terrain特有の癖が分かるまではUnity上で細かくデバッグしながら作成したほうが良さそう。
シェーダーからTerrainのInspector内の PaintTexture にアクセスしたい場合は以下を記述する。
(4つのテクスチャが登録されていると過程)
プロパティ内
[HideInInspector] _Splat3("Layer 3 (A)", 2D) = "white" {}
[HideInInspector] _Splat2("Layer 2 (B)", 2D) = "white" {}
[HideInInspector] _Splat1("Layer 1 (G)", 2D) = "white" {}
[HideInInspector] _Splat0("Layer 0 (R)", 2D) = "white" {}
[HideInInspector] _Normal3("Normal 3 (A)", 2D) = "bump" {}
[HideInInspector] _Normal2("Normal 2 (B)", 2D) = "bump" {}
[HideInInspector] _Normal1("Normal 1 (G)", 2D) = "bump" {}
[HideInInspector] _Normal0("Normal 0 (R)", 2D) = "bump" {}
入力部分の構造体の例
struct Input {
float2 uv_Sample;
float2 uv_Main : TEXCOORD0;
float2 uv_Splat0 : TEXCOORD1;
float2 uv_Splat1 : TEXCOORD2;
float2 uv_Splat2 : TEXCOORD3;
float2 uv_Splat3 : TEXCOORD4;
};
変数宣言部でサンプラーを利用できるようにする
uniform sampler2D _Splat0,_Splat1,_Splat2,_Splat3;
サーフェイスシェーダー内部でのアクセス方法
tex2D(_Splat0, IN.uv_Splat0)
グーグル上で資料が増えたこともあって、シェーダーまわりの知りたいことは一通り調査が終わった!
次はずっとしたかったのにできなかったSubstanceDesignerとPainterのアップデートをやっていこうと思う~
Unity5のサーフェイスシェーダー
昨日の続きでUnity5のサーフェイスシェーダー内部を覗いてみた。
PBRに対応するため内部で面倒なことをしていると思い込んでいたら、まるごとすっきりとリメイクされている模様。
よってほとんど説明する内容が無い・・・。
Shader "Custom/NewShader" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
void surf (Input IN, inout SurfaceOutputStandard o) {
// Albedo comes from a texture tinted by color
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
Vertex/FragmentシェーダーをPBRで書く必要が無い限りは物理ベースの計算を隠蔽したままコーディングができそうな気配!
これはありがたい・・・。
Unity5のCustomShaderの互換性
昨日の記事に引き続き、まずはPBRの部分を無視してShader機能の互換性について調査。
アップデート時の注意点をまとめてみた。
・ライトの光の強度が2倍になったよ
・サーフェイスシェーダのインタポレーターと命令数の増加でSM2.0だと命令数リミットにより動作しない可能性があるよ→問題が出たらSM3.0にしてみたら?
・ノンユニフォームメッシュはCPUの段階で事前スケールされなくなったことにより NormalやTangentベクトルのNormalizeの必要性がでたよ(サーフェイスシェーダーの場合は生成してくれる)
・フォグの描画タイミングを変更 #pragmaにnofogと表記することで明示的にフォグのサポート状況を管理できるようになったよ
・サーフェイスシェーダーのAlphaチャンネルにデフォルトで1.0が出力されるようになったよ
・パフォーマンス改善のためForward描画中にマテリアルインデックス順に描画していた仕様を変更→ソートは行わないためインデックスに依存した仕様だった場合は注意ね
・見たこともないいくつかの固定関数シェーダーの廃止(使ったら警告がでる)
・プログラマブルシェーダーと固定関数シェーダーの併用ができなくなったよ
・シェーダーコンパイラが変更され少し速くなったよ
・変数「unity_Scale」は廃止するから 今後はWorldスペースに変換してスケール行列を適用してね
・Forwardで描写された影のEffectPass(ShadowCollectorパス)の処理は移動したので古いパスは削除して問題ないよ
結構深いことをしていないとクリティカルな問題は生じなそうな変更点ですね。
UnityからGPUに渡す部分をシンプルにしたい思惑が見て取れます。
Unity5のCustomShader
Unity5でPBRが導入されてカスタムシェーダの書き方に関する最新の記事を探していたんですが
Unity5の公開当初はまったくといっていいほど情報がありませんでした。
情報が出るのを待っていたんですが、仕事が忙しくなってしまいなかなかチェックができていませんでした。
ようやく時間がとれるようになってきたのでネットサーフィンしてみると以前全く見つからなかった情報がチラホラと。
http://docs.unity3d.com/Manual/UpgradeGuide5-Shaders.html
http://www.alanzucconi.com/2015/06/24/physically-based-rendering-and-lighting-models-in-unity3d/
相変わらず日本語資料は皆無です。
PBRのシェーディングの概要は理解しているつもりなのですが、計算部分まで学習してしまうか悩ましいところです。
(覗いてもいないのでどのくらいのハードルなのか分からないし怖い・・・。)
まだ資料は読んでないのですが、Terrain専用のカスタムシェーダーの作成を目標に動き出すことにしました。
(以前、サークルのレベルデザイナー担当の方が、Terrainの思索段階で何度もテクスチャペイントを使って雰囲気を出しては作り直して~という作業を行っていたのを見て、TerrainShaderを書いてみたいと思っていました。)
UnityのTerrainはシェーダの構造が特殊でマテリアルのものを移植できないみたいなので、そのあたりも資料を集めねば。
After Effects CC を英語版で起動する方法
「After Effects CC を英語版で起動する方法」を忘れないためのメモ
ae_force_english.txtという空のファイルを作成
マイドキュメント(ライブラリ>ドキュメント)フォルダに上記のファイルを移動
これだけでAEが英語版のUIで起動する
戻したい場合はファイルを消すだけの簡単なお仕事です
キャプチャソフト
デスクトップを録画したかったのでソフトを調査
キャプチャソフトがAdobeCCに組み込まれていれば最高だったんだけど見つからなかった
結論から言うと
Bandicam+可逆圧縮コーデック
が一番綺麗にキャプチャできて今回の目的に合っていた
エンコーダーはAdobe Media EncoderCCがいい感じだった
(AfterEffectsをインストールすると勝手にインストールされるっぽい)
以下各ソフトの個人的感想(2014.12.14)
ShadowPlay
ハードを利用したNVIDIAのシステム
現状最強だと思われる
β版のため解像度が変更できないのとマウスが強制的に録画されてしまうため今回は見送り
Bandicam
UIが馴染みやすく使いやすかった
外部のコーデックも扱える
使用メモリを低く抑えられるためゲームキャプチャに向いている
今回はできるだけ画質を上げたかったので内臓コーデックでは満足できなかった
MovaviScreenCapture
古いバージョンはファイルサイズのわりにすごく綺麗なのに
Windows8でも使えるバージョンにすると画質が劣化した
録画前に勝手にAeroをオフにする仕様も微妙(設定で切れるけど重いらしい)
Dxtory
画質はとても綺麗(動画サイズはかなり大きくなる)
DirectX、OpenGLを利用している部分しかキャプチャできないので断念
Fraps
Dxtory同様DirectX、OpenGLを利用している部分しかキャプチャできないっぽい
アマレココ
内臓しているAMVコーデックはサイズが小さいのに画質は綺麗と素晴らしい
ただキャプチャソフトのUIが使いにくかった
コーデックのみ別売りしているのでそちらだけ利用するのもあり
※後述するけどAEに読み込めない
ここからコーデックのお話
高画質な動画を作成するにためには 編集の際に元の動画をいかに高画質に保つかが重量
といっても非圧縮だと数秒でギガ単位のサイズになるため現実的じゃない
そこで可逆圧縮AVIという選択肢がでてくる
(可逆圧縮コーデックは配布などには向かないためオリジナルソースに用いるものだと考えていい)
アマレココに付属しているAMV4や有名どころのHuffyuvはAfterEffectsCCにはうまく読み込めなかった
そこでLagarith Lossless Codecを試したところ 読み込みに成功!
速度 と 圧縮率 共に満足いくものだったので採用することに
特徴としては
・CPU負担が少し高いらしい(体感できず)
・オプションでマルチコアに対応可能
・インストーラーを使うと32bitと64bit両方インストールされる(らしい)
・扱える色空間が多い
・NULLフレーム対応
・ライセンスはGPL(エンコードせずに配布することは無いと思うので気にしなくていいかも)
調査中に可逆圧縮コーデックを比較しているサイトを見つけたのでペタリ