У меня есть 3D-сетка .fbx, которую я импортировал как объект GameObject в Unity.У него есть цвета вершин.Я пытаюсь заставить некоторые части сетки отображаться как прозрачные, в идеале, когда пользователь выбирает параметр так.
Для справки, вот скриншот меша, который я использую.
https://imgur.com/a/FY8Z38r
Я написал шейдер в Unity, который прикреплен к материалу этого GameObject, который позволяет отображать цвета вершин меша.
Shader "Custom/VertexColor" {
// Where it will appear inside of the Shader Dropdown Menu of the Material / Name of the shader
SubShader{
Tags { "RenderType" = "Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert vertex:vert
#pragma target 3.0
struct Input {
float4 vertColor;
};
float _CutoutThresh;
void vert(inout appdata_full v, out Input o) {
UNITY_INITIALIZE_OUTPUT(Input, o);
o.vertColor = v.color;
}
void surf(Input IN, inout SurfaceOutput o) {
#include "UnityCG.cginc
o.Albedo = IN.vertColor.rgb;
clip(IN.vertColor.r = 0.5); // Discards any pixel whose interpolated vertex color in the red channel is less than 0.5
}
ENDCG
}
FallBack "Diffuse"
}
В частности, эта строка здесь: clip (IN.vertColor.g = 0.5);// Отбрасывает любой пиксель, чей интерполированный цвет вершины в зеленом канале меньше 0,5
Я ожидал, что эта строка отбросит любые не зеленые пиксели, но мой GameObject все еще выглядит так же.