Shader显示模型外轮廓线

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 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"

}


相关文章
|
8月前
|
编解码 人工智能 测试技术
无需训练,这个新方法实现了生成图像尺寸、分辨率自由
【4月更文挑战第25天】研究人员提出FouriScale方法,解决了扩散模型在生成高分辨率图像时的结构失真问题。通过膨胀卷积和低通滤波,该方法实现不同分辨率下图像的结构和尺度一致性,无需重新训练模型。实验显示FouriScale在保持图像真实性和完整性的同时,能生成任意尺寸的高质量图像,尤其在处理高宽比图像时表现出色。尽管在极高分辨率生成上仍有局限,但为超高清图像合成技术提供了新思路。[链接: https://arxiv.org/abs/2403.12963]
90 5
|
图形学
模型UV纹理设置工具
贴图可以赋予模型丰富的外观纹理和颜色信息,而法线贴图可以增加模型的细节和真实感。这两种纹理贴图技术相互配合,共同营造出逼真的三维场景。
206 0
模型UV纹理设置工具
|
3月前
ThreeJs控制模型的隐藏与显示
这篇文章讲解了如何在Three.js中通过代码控制3D模型的显示与隐藏状态。
57 3
ThreeJs控制模型的隐藏与显示
|
Java
剪裁NV21任意一部分的代码
剪裁NV21任意一部分的代码
127 0
|
Android开发 异构计算
Android图形显示系统——下层显示4:图层合成上(合成原理与3D合成)
Android显示之图层合成 要点 1.图层合成指综合各个窗口的绘制内容,送往LCD显示的过程。从原理上可分为在线合成与离线合成两种方式。 2.在Android的SurfaceFlinger代码流程中,图层合成方式分3D合成(OpenGL)和硬件合成两大类。 3.图形系统采用垂直同步Vsync机制,由LCD上报vsync,触发图层合成。 图层合成的原理
6037 0
|
计算机视觉
Qt实用技巧:Qt设计器中QIcon的缩放(qss的放大和QIcon自动缩小(无法自动放大))
Qt实用技巧:Qt设计器中QIcon的缩放(qss的放大和QIcon自动缩小(无法自动放大))
Qt实用技巧:Qt设计器中QIcon的缩放(qss的放大和QIcon自动缩小(无法自动放大))
|
缓存 索引
OpenGL学习笔记(九):索引缓冲器(EBO /IBE)的理解与使用,引入线框/填充模式
OpenGL学习笔记(九):索引缓冲器(EBO /IBE)的理解与使用,引入线框/填充模式
OpenGL学习笔记(九):索引缓冲器(EBO /IBE)的理解与使用,引入线框/填充模式
|
计算机视觉
Qt实用技巧:代码中QIcon缩放(QPixmap的手动放大和QIcon自动缩小)
Qt实用技巧:代码中QIcon缩放(QPixmap的手动放大和QIcon自动缩小)
Qt实用技巧:代码中QIcon缩放(QPixmap的手动放大和QIcon自动缩小)
|
存储
了解OpenGL中的投影方式、存储着色器分类、常见图元连接方式
了解OpenGL中的投影方式、存储着色器分类、常见图元连接方式
252 0
了解OpenGL中的投影方式、存储着色器分类、常见图元连接方式
|
机器学习/深度学习 算法 Java
以动制动 | Transformer 如何处理动态输入尺寸
为什么 Transformer 结构的网络中需要指定输入的图像尺寸呢?我们能否移除这个限制,让网络动态地支持各种尺寸的输入图像呢?这对于一些下游任务有重要的作用,也已经有了一些成熟的解决方案。在最新版的 MMClassification 中,我们将这一功能扩展到了各种基于 Transformer 结构的主干网络中,实现了分类任务与下游任务主干网络的统一。
821 0
以动制动 | Transformer 如何处理动态输入尺寸

热门文章

最新文章