29 lines
948 B
HLSL
29 lines
948 B
HLSL
#ifndef NpcBase_INCLUDE
|
||
#define NpcBase_INCLUDE
|
||
#include "UnityCG.cginc"
|
||
#include "Gles2Helper.cginc"
|
||
#include "FlowColorBase.cginc"
|
||
|
||
uniform sampler2D _MainTex;
|
||
uniform float4 _MainTex_ST;
|
||
uniform half _Emission;
|
||
uniform half4 _Color;
|
||
uniform half4 _AddColor;
|
||
uniform half _Outline;
|
||
uniform half4 _OutlineColor;
|
||
|
||
// 注:边缘光是优化算法,无法线贴图时,切线空间法线为(0,0,1),点乘结果为viewDir的z
|
||
#define NPC_VERT_COMMON(o) \
|
||
o.pos = UnityObjectToClipPos(v.vertex); \
|
||
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); \
|
||
half3 objectViewDir = ObjSpaceViewDir(v.vertex); \
|
||
TANGENT_SPACE_ROTATION; \
|
||
o.rim = saturate(1 - normalize(MUL_3x3_WITH_VECTOR(rotation, objectViewDir)).z); \
|
||
o.rim = pow(o.rim, _Outline);
|
||
|
||
#define NPC_FRAG_COMMON(col) \
|
||
col = tex2D(_MainTex, i.texcoord); \
|
||
col.rgb *= _Color.rgb; \
|
||
col.rgb += col.rgb * _Emission + _AddColor; \
|
||
col.rgb += _OutlineColor.rgb * _OutlineColor.a * i.rim
|
||
#endif |