Cg shading in world space

来源:互联网 发布:科罗拉多矿业大学知乎 编辑:程序博客网 时间:2024/05/16 06:13
Shader "Custom/Cg shading in world space" {SubShader {Pass {CGPROGRAM#pragma vertex vert #pragma fragment frag struct vertexInput{float4 vertex:POSITION ;};struct vertexOutput{float4 pos:SV_POSITION;float4 position_in_world_space:TEXCOORD0 ; } ;vertexOutput vert(vertexInput input){vertexOutput output;output.pos = mul(UNITY_MATRIX_MVP,input.vertex);output.position_in_world_space = mul(_Object2World ,input.vertex );return output;}float4 frag(vertexOutput input):COLOR{float dist = distance(input.position_in_world_space,float4(0.0,0.0,0.0,1.0));float p = step(5.0,dist);return float4(0.5 * p,1-0.9*p,0.5 * p,1.0);}ENDCG}}}






Shader "Custom/Cg shading in world space1" {Properties{_Point("a point in world space",Vector) = (0.0,0.0,0.0,1.0)_DistanceNear("theshold distance",Float) = 5.0_ColorNear("color near to point",Color) = (0.0,1.0,0.0,1.0)_ColorFar("color far from point",Color) = (0.3,0.3,0.3,1.0)}SubShader {Pass {CGPROGRAM#pragma vertex vert #pragma fragment frag#include "UnityCG.cginc"uniform float4 _Point;uniform float _DistanceNear;uniform float4 _ColorNear;uniform float4 _ColorFar;struct vertexInput{float4 vertex:POSITION ;} ;struct vertexOutput{float4 pos:SV_POSITION;float4 position_in_world_space:TEXCOORD0 ; };vertexOutput vert(vertexInput input){vertexOutput output;output.pos = mul(UNITY_MATRIX_MVP,input.vertex);output.position_in_world_space = mul(_Object2World ,input.vertex );return output;}float4 frag(vertexOutput input):COLOR{float dist = distance(input.position_in_world_space,_Point);float p = step(_DistanceNear,dist);return _ColorNear * (1.0-p) + _ColorFar * p;}ENDCG}}}


0 0