当前位置: 首页 > news >正文

Unity shaderlab 实现LineSDF

实现效果:

实现代码:

Shader "Custom/LineSDF"
{Properties{}SubShader{Tags { "RenderType"="Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;fixed2 uv:TEXCOORD0;};struct v2f{float4 vertex : SV_POSITION;fixed2 uv:TEXCOORD0;};float line_segment(float2 p, float2 a, float2 b) {float2 ba = b - a;float2 pa = p - a;float h = clamp(dot(pa, ba) / dot(ba, ba), 0., 1.);return length(pa - h * ba);} float3 mix(float3 e1, float3 e2, float e3){return e1 * (1-e3) + e2 * e3; }v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}float4 frag (v2f i) : SV_Target{float2 pos = (i.uv - 1 * .5) / 1;float zoom = 2.5;pos *= zoom;float2 v1 = cos(_Time.x + float2(0.,5.));float2 v2 = cos(_Time.x + float2(0.,5.) + 3.1);float thickness = .2 * (.5 + .5 * sin(_Time.x * 1.));float d = line_segment(pos, v1, v2) - thickness;float3 color = float3(1,1,1) - sign(d) * float3(0,0,0);color *= 1.5 - exp(.5 * abs(d));color *= .5 + .3 * cos(120. * d);color = mix(color, float3(1,1,1), 1. - smoothstep(.0, .015, abs(d)));return float4(color, 1.);}ENDCG}}
}

注:在ShaderToy里的fragCoord就相当于顶点着色器传过来的uv值。 

参考链接:

Line Segment (SDF) (shadertoy.com)

Inigo Quilez :: computer graphics, mathematics, shaders, fractals, demoscene and more (iquilezles.org)

http://www.lryc.cn/news/493336.html

相关文章:

  • Ubuntu中的apt update 和 apt upgrade
  • Android 中 Swipe、Scroll 和 Fling 的区别
  • linux基础2
  • 如何通过智能生成PPT,让演示文稿更高效、更精彩?
  • 执法记录仪数据自动备份光盘刻录归档系统
  • 启动SpringBoot
  • 重定向操作和不同脚本的互相调用
  • 51单片机教程(九)- 数码管的动态显示
  • golang支持线程安全和自动过期map
  • 机器学习之RLHF(人类反馈强化学习)
  • 泷羽sec---shell作业
  • 华为海思2025届校招笔试面试经验分享
  • 摆脱复杂配置!使用MusicGPT部署你的私人AI音乐生成环境
  • 嵌入式Linux中的GPIO编程
  • js:函数
  • 低代码平台审批流程设计
  • OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用
  • Linux信号量的编程
  • “Yaker,你可以全局配置插件环境变量!“
  • SAAS美容美发系统架构解析
  • 如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间
  • vscode远程连接ssh
  • 智慧防汛平台在城市生命线安全建设中的应用
  • python实现TCP Socket控制测试仪器
  • 51c自动驾驶~合集38
  • 电脑显示器拔插DVI线后副屏不显示
  • Bash脚本常用命令
  • 《Unity Shader 入门精要》高级纹理
  • vue3实现自定义导航菜单
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))