2、片元着色器之有向距离场(SDF)运算:并集、差集、交集

1、并集

float sdCircle(vec2 uv,float r){return length(uv)-r;
}
float sdRect(vec2 uv,float r){return max(abs(uv.x),abs(uv.y))-r;
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{float w = 1.0/iResolution.y;// 计算纹理坐标vec2 uv = fragCoord/iResolution.xy;// 将纹理坐标系原点移动到屏幕中央uv-=0.5;// 调整 x 轴比例,使得坐标系纵横比一致uv.x*=iResolution.x/iResolution.y;vec3 col = vec3(0.0);// `sdRect(uv - vec2(0.1, 0.1), 0.2)`计算当前 uv 坐标到中心在 (0.2, 0.2)、半径为 0.2 的矩形的距离float r= sdRect(uv-vec2(0.1,0.1),0.2);// 大于0代表像素点不在矩形范围内r = r > 0.0 ? 0.0:1.0;float c = sdCircle(uv-vec2(-0.1,-0.1),0.2);c = c > 0.0 ? 0.0:1.0;// 并集就是像素属于圆或者矩形都可以着色,即r=1 or c=1float result = max(r,c);//r和c只能为0或1,取最大值即有一个为1结果就是1col = mix(col,vec3(1.0,0.0,1.0),result);fragColor = vec4(col,1.0);
}

在这里插入图片描述

2、差集

float sdCircle(vec2 uv,float r){return length(uv)-r;
}
float sdRect(vec2 uv,float r){return max(abs(uv.x),abs(uv.y))-r;
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{float w = 1.0/iResolution.y;// 计算纹理坐标vec2 uv = fragCoord/iResolution.xy;// 将纹理坐标系原点移动到屏幕中央uv-=0.5;// 调整 x 轴比例,使得坐标系纵横比一致uv.x*=iResolution.x/iResolution.y;vec3 col = vec3(0.0);// `sdRect(uv - vec2(0.1, 0.1), 0.2)`计算当前 uv 坐标到中心在 (0.2, 0.2)、半径为 0.2 的矩形的距离float r= sdRect(uv-vec2(0.1,0.1),0.2);// 大于0代表像素点不在矩形范围内r = r > 0.0 ? 0.0:1.0;float c = sdCircle(uv-vec2(-0.1,-0.1),0.2);c = c > 0.0 ? 0.0:1.0;// 差集就是像素只属于圆或者只属于矩形才能着色,即(r=1 and c=0)&&(r=0 and c=1)float result = abs(r-c);col = mix(col,vec3(1.0,0.0,1.0),result);fragColor = vec4(col,1.0);
}

在这里插入图片描述

3、交集

float sdCircle(vec2 uv,float r){return length(uv)-r;
}
float sdRect(vec2 uv,float r){return max(abs(uv.x),abs(uv.y))-r;
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{float w = 1.0/iResolution.y;// 计算纹理坐标vec2 uv = fragCoord/iResolution.xy;// 将纹理坐标系原点移动到屏幕中央uv-=0.5;// 调整 x 轴比例,使得坐标系纵横比一致uv.x*=iResolution.x/iResolution.y;vec3 col = vec3(0.0);// `sdRect(uv - vec2(0.1, 0.1), 0.2)`计算当前 uv 坐标到中心在 (0.2, 0.2)、半径为 0.2 的矩形的距离float r= sdRect(uv-vec2(0.1,0.1),0.2);// 大于0代表像素点不在矩形范围内r = r > 0.0 ? 0.0:1.0;float c = sdCircle(uv-vec2(-0.1,-0.1),0.2);c = c > 0.0 ? 0.0:1.0;// 交集就是像素既属于圆又属于矩形才能着色,即(r=1 and c=1)&&(r=1 and c=1)float result = r*c;col = mix(col,vec3(1.0,0.0,1.0),result);fragColor = vec4(col,1.0);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Apache Zookeeper】

一、简介 1、场景 如何让⼀个应⽤中多个独⽴的程序协同⼯作是⼀件⾮常困难的事情。开发这样的应⽤,很容易让很多开发⼈员陷⼊如何使多个程序协同⼯作的逻辑中,最后导致没有时间更好地思考和实现他们⾃⼰的应⽤程序逻辑;又或者开发⼈员对协同…

面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums) …

名词(术语)了解 -- SSG

名词(术语)了解 – SSG 什么是静态站点生成(SSG)? 静态站点生成(Static Site Generation, SSG)是一种在构建时生成静态HTML网页的网站构建方法。与动态网站相比,SSG会提前将所有页面渲染成静态HTML文件,这些文件可以直接部署到…

MyBatis 学习记录(六)之逆向工程

MyBatis 学习记录(六) MyBatis的逆向工程1、创建逆向工程添加依赖和插件创建逆向工程的配置文件执行MBG插件的generate目标最终生成的效果 2、QBC查询 MyBatis的逆向工程 **正向工程:**先创建Java实体类,由框架负责根据实体类生成…

【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型

前言 随着多模态大模型的发展,其不仅限于文字处理,更能够在图像、视频、音频方面进行识别与理解。医疗领域中,医生们往往需要对各种医学图像进行处理,以辅助诊断和治疗。如果将多模态大模型与图像诊断相结合,那么这会…

本篇文章来介绍下dockerfile

我开始玩儿docker的时候,都是通过docker pull命令把基础镜像拉取到本地,然后在跑成容器,在操作容器,做一些自己的事情,比如安装个java环境什么的,直到我接触到了dockerfile,我发现dockerfile真是…

Java识别图片或扫描PDF中的文字

目录 使用工具 Java识别图片中的文字 Java识别扫描PDF中的文字 注意事项 图片和扫描文件通常以非文本格式存在,这使得其中的文字信息难以直接编辑、搜索或复制。为了解决这个问题,光学字符识别(OCR)技术应运而生。OCR通过分析…

view design之table自定义单元格模版

View Design之table自定义单元格模版 在 columns 的某列声明 slot 后&#xff0c;就可以在 Table 的 slot 中使用参数。 slot 的参数有 3 个&#xff1a;当前行数据 row&#xff0c;当前列数据 column&#xff0c;当前行序号 index。 完整示例 <template><Table …

【Leecode】Leecode刷题之路第35天之搜索插入位置

题目出处 35-搜索插入位置-题目出处 题目描述 个人解法 思路&#xff1a; 1.依次遍历数组&#xff0c;看目标值是否在数组中 2.如果不在&#xff0c;将目标值插入数组&#xff08;涉及到数组移动、扩容&#xff09;&#xff0c;返回下标代码示例&#xff1a;&#xff08;Java…

深入解析JavaScript 中的 Object.defineProperty() 与 Object.defineProperties() 方法

目录 前言1. Object.defineProperty()2. Object.defineProperties() 前言 写在前面&#xff0c;基本的功能与差异如下&#xff1a; Object.defineProperty()&#xff1a; 定义单个属性&#xff0c;接受三个参数&#xff08;对象、属性名、描述符&#xff09; Object.definePr…

CAN物理层(ISO 11898-2 2024)

一、说明 CAN(Controller area network)中文名称是控制器局域网,是用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线,可以使用双绞线来传输信号,由德国博世公司在20世纪80年代专门为汽车行业开发。 ISO 11898-2 2024版相对于2016版,主要由以下更新…

VQGAN(2021-06:Taming Transformers for High-Resolution Image Synthesis)

论文&#xff1a;Taming Transformers for High-Resolution Image Synthesis 1. 背景介绍 2022年中旬&#xff0c;以扩散模型为核心的图像生成模型将AI绘画带入了大众的视野。实际上&#xff0c;在更早的一年之前&#xff0c;就有了一个能根据文字生成高清图片的模型——VQGAN…

HBuilder X 中Vue.js基础使用4->表单输入绑定(三)

表单绑定是实现动态数据双向绑定的重要部分&#xff0c;它让开发者可以轻松地管理和响应用户输入。本文将详细介绍如何在Vue 3中利用v-model指令以及一些特定修饰符来处理不同类型的表单输入。 v-model双向数据绑定 Vue的 v-model 指令提供了双向绑定的功能&#xff0c;key在…

「虚拟现实中的心理咨询:探索心灵世界的新方法」

内容概要 当我们想到虚拟现实时&#xff0c;很多人会联想到游戏或娱乐&#xff0c;但如今其在心理咨询领域的应用正在逐渐崭露头角。传统的心理咨询方式常常局限在咨询室内&#xff0c;面临着空间和情感隔阂的问题。然而&#xff0c;沉浸式环境的出现&#xff0c;使得治疗者能…

2024最新的开源博客系统:vue3.x+SpringBoot 3.x 前后端分离

本文转载自&#xff1a;https://fangcaicoding.cn/article/54 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验&#xff0c;截止目前面试过近200位候选人&#xff0c;主导过单表上10亿、累计上100亿数据…

C++核心编程和桌面应用开发 第十七天(set和multiset容器 pair map和multimap容器)

目录 1.set和multiset容器 1.1构造和赋值 1.2交换和大小 1.3插入和删除 1.4统计和查找 1.5pair对组 1.6set和multiset的区别 1.7指定内置数据类型排序规则 1.8指定自定义数据类型排序规则 2.map和multimap容器 2.1构造和赋值 2.2交换和大小 2.3插入和删除 2.4统计…

01.如何用DDD重构老项目

学习资料来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 动机DDD与重构实践重构? 重写从一开始就采用DDD重构步骤1. 添加领域模块2.分离出有价值的代码3.迁移到领域模块4.重复2,3 动机 …

OSI公布OSAID 1.0版 “开源人工智能”首次被定义

在2024年ALL THINGS OPEN大会上&#xff0c;Open Source Initiative (OSI) 正式发布了开源人工智能定义&#xff08;OSAID&#xff09;1.0版本&#xff0c;标志着全球首个开源AI标准的诞生。OSAID将作为衡量人工智能系统是否符合“开源人工智能”标准的依据&#xff0c;为社区主…

接口测试(八)jmeter——参数化(CSV Data Set Config)

一、CSV Data Set Config 需求&#xff1a;批量注册5个用户&#xff0c;从CSV文件导入用户数据 1. 【线程组】–>【添加】–>【配置元件】–>【CSV Data Set Config】 2. 【CSV数据文件设置】设置如下 3. 设置线程数为5 4. 运行后查看响应结果

【优选算法篇】前缀之序,后缀之章:于数列深处邂逅算法的光与影

文章目录 C 前缀和详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;前缀和基础应用1.1 一维前缀和模板题解法&#xff08;前缀和&#xff09;图解分析C代码实现易错点提示代码解读题目解析总结 1.2 二维前缀和模板题解法&#xff08;二维前缀和&#xff09;图解分析C…