您的位置:首页 > 产品设计 > UI/UE

Cg silhouette enhancement

2015-10-14 16:05 435 查看
Shader "Custom/Cg silhouette enhancement"
{
Properties
{
_Color("Color",Color) = (1,1,1,0.5)
_Pow("Power",Range(0,10)) = 1
}
SubShader
{
Tags { "Queue" = "Transparent" }
Pass
{
ZWrite Off
Blend SrcALpha OneMinusSrcALpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag

#include "UnityCG.cginc"

uniform float4 _Color;
uniform float _Pow;

struct vertexInput
{
float4 vertex:POSITION;
float3 normal:NORMAL;
};

struct vertexOutput
{
float4 pos:SV_POSITION;
float3 normal:TEXCOORD0;
float3 viewDir:TEXCOORD1;
};

vertexOutput vert(vertexInput input)
{
vertexOutput output;

float4x4 modelMatrix = _Object2World ;
float4x4 modelMatrixInverse = _World2Object;

output.normal = normalize(mul(float4(input.normal,0.0),modelMatrixInverse).xyz);
output.viewDir = normalize(_WorldSpaceCameraPos - mul(modelMatrix,input.vertex).xyz);
output.pos = mul(UNITY_MATRIX_MVP,input.vertex);
return output;
}

float4 frag(vertexOutput input):COLOR
{
float3 normalDirection = normalize(input.normal);
float3 viewDirection = normalize(input.viewDir );

float newOpacity = pow(min(1.0,_Color.a / abs(dot(viewDirection,normalDirection))),_Pow);
float4 finalColor =  float4(_Color.rgb,newOpacity);
return finalColor;
}

ENDCG
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息