Shader显示模型外轮廓线

简介: Shader显示模型外轮廓线

前言:每日记录自己学习Shader的心得和体会,小弟才疏学浅,如有错误的地方,欢迎大佬们指正,感谢~


image.png

shader代码

Shader "WCL/Wireframe" {

Properties {

       _Color("Color",Color)=(1.0,1.0,1.0,1.0)

       _EdgeColor("Edge Color",Color)=(1.0,1.0,1.0,1.0)

       _Width("Width",Range(0,1))=0.2

   }

SubShader {

   Tags {  

   "Queue"="Transparent"  

   "IgnoreProjector"="True"  

   "RenderType"="Transparent"  

   }

   Blend SrcAlpha OneMinusSrcAlpha

   LOD 200

   Cull Front

   zWrite off

   Pass {

   CGPROGRAM

   #pragma vertex vert

   #pragma fragment frag

   #pragma target 3.0

   #include "UnityCG.cginc"

   struct a2v {

       half4 uv : TEXCOORD0 ;

       half4 vertex : POSITION ;

   };

   struct v2f{

       half4 pos : SV_POSITION ;

       half4 uv : TEXCOORD0  ;            

   };

   fixed4 _Color;

   fixed4 _EdgeColor;

   float _Width;

 

   v2f vert(a2v v)

   {

       v2f o;

       o.uv = v.uv;

       o.pos=UnityObjectToClipPos(v.vertex);

       return o;

   }

   fixed4 frag(v2f i) : COLOR

   {

       fixed4 col;

       float lx = step(_Width, i.uv.x);

       float ly = step(_Width, i.uv.y);

       float hx = step(i.uv.x, 1.0 - _Width);

       float hy = step(i.uv.y, 1.0 - _Width);

       col = lerp(_EdgeColor, _Color, lx*ly*hx*hy);

       return col;

   }

   ENDCG

   }

   Blend SrcAlpha OneMinusSrcAlpha

   LOD 200  

   Cull Back

   zWrite off

   Pass {

   CGPROGRAM

   #pragma vertex vert

   #pragma fragment frag

   #pragma target 3.0

   #include "UnityCG.cginc"

   struct a2v {

       half4 uv : TEXCOORD0 ;

       half4 vertex : POSITION ;

   };

   struct v2f{

       half4 pos : SV_POSITION ;

       half4 uv : TEXCOORD0  ;            

   };

   fixed4 _Color;

   fixed4 _EdgeColor;

   float _Width;

 

   v2f vert(a2v v)

   {

       v2f o;

       o.uv = v.uv;

       o.pos=UnityObjectToClipPos(v.vertex);

       return o;

   }

   fixed4 frag(v2f i) : COLOR

   {

       fixed4 col;

       float lx = step(_Width, i.uv.x);

       float ly = step(_Width, i.uv.y);

       float hx = step(i.uv.x, 1.0 - _Width);

       float hy = step(i.uv.y, 1.0 - _Width);

       col = lerp(_EdgeColor, _Color, lx*ly*hx*hy);

       return col;

   }

   ENDCG

   }

}  

   FallBack "Diffuse"

}


相关文章
|
编解码 程序员 atlas
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
图集只是当所有给低昂的纹理需要相同的着色器时采用的一种方法,如果一些纹理需要通过着色器应用独立的图形效果,它们就必须分离到自己的材质中,并在单独的组中打图集。
3029 0
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
|
4月前
|
人工智能 监控 算法
基于 YOLOv8 的水体污染目标检测系统 [目标检测完整源码]
本文围绕水体环境治理这一典型的现实需求,系统性地介绍了一个基于 YOLOv8 的水体污染智能监控解决方案。从应用背景出发,逐步阐述了系统架构设计、模型选型原因、数据集构建、训练与推理流程,以及 PyQt5 可视化界面的工程实现方式。该项目不仅验证了 YOLOv8 在复杂水面场景下对废弃物、污染区域、漂浮物等目标的良好检测能力,也通过完整的软件形态提升了算法的可用性与落地价值。整体来看,该方案兼顾技术先进性与工程实用性,为水环境监测、环保执法及无人机巡检等场景提供了一条可复用、可扩展的智能化实现路径。
220 9
|
前端开发 图形学
unity UGUI跟随3D物体的坐标转换
在 Unity 中实现 UGUI 元素跟随 3D 物体,关键是将 3D 物体的世界坐标转换为屏幕或画布坐标。通过 Camera.WorldToScreenPoint 方法,可将 3D 物体位置映射到屏幕上,再更新 UGUI 元素的位置。代码示例展示了如何使用该方法,使 UGUI 图像跟随 3D 模型,并提供文字显示、图像和线条的显示/隐藏功能。
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
652 2
conda和pip指定镜像源下载
conda和pip指定镜像源下载
1575 1
|
存储 安全 数据安全/隐私保护
OAuth 2.0 的授权机制
【10月更文挑战第5天】
1343 2
|
数据可视化 API 索引
DOTween教程☀️DOTween的使用教程
DOTween教程☀️DOTween的使用教程
|
开发框架 JSON .NET

热门文章

最新文章