新闻资讯
您所在的位置是:首页 >> 新闻资讯
您所在的位置是:首页 >>新闻资讯

怎么在Unity3D中实现这种线框效果

怎么在Unity3D中实现这种线框效果

发布时间:2025-02-03 16:47:52

可以自己写一个Shader

Shader "Custom/WireFrame"

{

Properties

{

_LineColor ("Line Color", Color) = (1,1,1,1)

_GridColor ("Grid Color", Color) = (1,1,1,0)

_LineWidth ("Line Width", float) = 0.2

}

SubShader

{

Pass

{

//Tags { "RenderType" = "Transparent" }

// Blend SrcAlpha OneMinusSrcAlpha//这句可以注释掉,能够避免线框太粗出现的模糊效果。

//AlphaTest Greater 0.5

//Cull Off//这句是后加的,取消遮挡消隐,体现出透明

CGPROGRAM

#pragma vertex vert

#pragma fragment frag

uniform float4 _LineColor;

uniform float4 _GridColor;

uniform float _LineWidth;

// vertex input: position, uv1, uv2

struct appdata

{

float4 vertex : POSITION;

float4 texcoord1 : TEXCOORD0;

float4 color : COLOR;

};

struct v2f

{

float4 pos : POSITION;

float4 texcoord1 : TEXCOORD0;

float4 color : COLOR;

};

v2f vert (appdata v)

{

v2f o;

o.pos = mul( UNITY_MATRIX_MVP, v.vertex);

o.texcoord1 = v.texcoord1;

o.color = v.color;

return o;

}

fixed4 frag(v2f i) : COLOR

{

fixed4 answer;

float lx = step(_LineWidth, i.texcoord1.x);

float ly = step(_LineWidth, i.texcoord1.y);

float hx = step(i.texcoord1.x, 1.0 - _LineWidth);

float hy = step(i.texcoord1.y, 1.0 - _LineWidth);

answer = lerp(_LineColor, _GridColor, lx*ly*hx*hy);

return answer;

}

ENDCG

}

}

Fallback "Vertex Colored", 1

}

-----材料来自百度知道

本站热点

热点tag标签