আপনার চরিত্রটি বিবর্ণ করতে আপনি বিশ্ব স্থান ব্যবহার করতে পারেন।
অবজেক্ট স্পেস (বা অবজেক্ট কোঅর্ডিনেট সিস্টেম) প্রতিটি গেমের অবজেক্টের জন্য নির্দিষ্ট; তবে, সমস্ত গেমের অবজেক্টগুলি একটি সাধারণ স্থানাঙ্ক ব্যবস্থায় রূপান্তরিত হয় - বিশ্ব স্থান।
যদি কোনও গেমের অবজেক্ট সরাসরি বিশ্ব স্পেসে স্থাপন করা হয় তবে গেম অবজেক্টের ট্রান্সফর্ম উপাদান দ্বারা অবজেক্ট-টু-ওয়ার্ল্ড ট্রান্সফর্মেশন নির্দিষ্ট করা হয়।
https://en.wikibooks.org/wiki/Cg_Programming/Unity/Shading_in_World_Space
বিশ্ব স্থান দ্বারা বিলীন
Shader "Smkgames/worldSpaceFade" {
Properties{
_Size("Size",Vector) = (2,2,0,0)
}
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 = UnityObjectToClipPos(input.vertex);
output.position_in_world_space =
mul(unity_ObjectToWorld, input.vertex);
return output;
}
float2 _Size;
float4 frag(vertexOutput input) : COLOR
{
float3 world = input.position_in_world_space;
float4 equation = pow(world.x/_Size.x,8) + pow(world.z/_Size.y,8);
return smoothstep(1,0,equation);
}
ENDCG
}
}
}
সারফেস শেডার
বিশ্ব স্থান বোঝার পরে আমরা এটি আমাদের পৃষ্ঠের শেডারে ব্যবহার করতে পারি:
Shader "Smkgames/worldSpaceFade" {
Properties {
_Size("Size",Vector) = (2,2,0,0)
_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 {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
Pass {
ZWrite On
ColorMask 0
}
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows alpha:fade
#pragma target 3.0
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
float3 worldPos: TEXCOORD2;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
float2 _Size;
void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
o.worldPos = mul(unity_ObjectToWorld, v.vertex);
}
UNITY_INSTANCING_BUFFER_START(Props)
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
float4 equation = pow(IN.worldPos.x/_Size.x,8) + pow(IN.worldPos.z/_Size.y,8);
o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = smoothstep(1,0,equation);
}
ENDCG
}
FallBack "Diffuse"
}