Standard shader with vertex colors | Unity Forumに投稿されているものは、落とす影までちゃんと正しい形になっている点などが興味深いと思いますが、いかがでしょうか。
ただ、GitHub - H-man/UnityVertexColorsにある改変バージョンをWindows版2017.4.1f1、DirectX 11で試してみたところ、'FragmentSetup': cannot convert from 'half4[3]' to 'float4[3]'
などと文句を言われてしまいました。
仕方ないので、UnityVC.cgincを下記のように書き換えてみたところ、とりあえず動作するようになりました。
HLSL
1/*
2Unity Standard Vertex Color Shader for Unity 2017.1.1f1
3(original by defaxer)
4*/
5
6#ifndef UNITY_VC_INCLUDED
7#define UNITY_VC_INCLUDED
8
9// half4配列で受け取ったtangentToWorldをfloat4配列に変えてFragmentSetupに渡し、受け取った結果を返す
10inline FragmentCommonData FragmentSetupCustom(inout float4 i_tex, float3 i_eyeVec, half3 i_viewDirForParallax, half4 tangentToWorld[3], float3 i_posWorld) {
11 float4 tangentToWorldF[3];
12 tangentToWorldF[0] = tangentToWorld[0];
13 tangentToWorldF[1] = tangentToWorld[1];
14 tangentToWorldF[2] = tangentToWorld[2];
15 return FragmentSetup(i_tex, i_eyeVec, i_viewDirForParallax, tangentToWorldF, i_posWorld);
16}
17
18// FRAGMENT_SETUP、FRAGMENT_SETUP_FWDADDで上記FragmentSetupCustomを使わせる
19#undef FRAGMENT_SETUP
20#define FRAGMENT_SETUP(x) FragmentCommonData x = FragmentSetupCustom(i.tex, i.eyeVec, IN_VIEWDIR4PARALLAX(i), i.tangentToWorldAndPackedData, IN_WORLDPOS(i));
21#undef FRAGMENT_SETUP_FWDADD
22#define FRAGMENT_SETUP_FWDADD(x) FragmentCommonData x = FragmentSetupCustom(i.tex, i.eyeVec, IN_VIEWDIR4PARALLAX_FWDADD(i), i.tangentToWorldAndLightDir, IN_WORLDPOS_FWDADD(i));
23
24// 以降のコードは変更なし
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/30 01:44