Distortion, Animation Raymarching

这节课的主要目的是对uv进行操作,实现一些动画的效果,实际就是采样的动画

struct texDistort
{float2 texScale(float2 uv, float2 scale){float2 texScale = (uv - 0.5) * scale + 0.5;return texScale;}float2 texRotate(float2 uv, float angle){float2x2 rotationMatrix = float2x2(cos(angle), sin(angle),-sin(angle), cos(angle));return mul(uv - 0.5, rotationMatrix) + 0.5;}float2 texDistortion(float2 uv, float time){float angle = atan2(uv.y - 0.5, uv.x - 0.5);float radius = length(uv - 0.5);float distortion = 4 * sin(3 * radius + 2 * time);return texRotate(uv, distortion);}
};

主要的变化公式,这里主要注意hlsl中因为是列优先存储所以右乘会更加的快速。这里列举了三种变化方式

缩放

旋转

记得转为弧度制radians()

动态旋转

struct texDistort
{float2 texScale(float2 uv, float2 scale){float2 texScale = (uv - 0.5) * scale + 0.5;return texScale;}float2 texRotate(float2 uv, float angle){float2x2 rotationMatrix = float2x2(cos(angle), sin(angle),-sin(angle), cos(angle));return mul(uv - 0.5, rotationMatrix) + 0.5;}float2 texDistortion(float2 uv, float time){float angle = atan2(uv.y - 0.5, uv.x - 0.5);float radius = length(uv - 0.5);float distortion = 4 * sin(3 * radius + 2 * time);return texRotate(uv, distortion);}
} tex;
float4 color = Texture2DSample(texObject, texObjectSampler, tex.texDistortion(uv, time));
return color;

更多的变化

struct texDistort
{float2 texScale(float2 uv, float2 scale){float2 texScale = (uv - 0.5) * scale + 0.5;return texScale;}float2 texRotate(float2 uv, float angle){float2x2 rotationMatrix = float2x2(cos(angle), sin(angle),-sin(angle), cos(angle));return mul(uv - 0.5, rotationMatrix) + 0.5;}float2 texDistortion(float2 uv, float time){float angle = atan2(uv.y - 0.5, uv.x - 0.5);float radius = length(uv - 0.5);float distortion = 4 * sin(3 * radius + 2 * time);float primDist = sin(6.0 * angle) * distortion;return texRotate(uv, primDist);}
} tex;
float4 color = Texture2DSample(texObject, texObjectSampler, tex.texDistortion(uv, time));
return color;

深度视觉

深度视觉这里实际就是利用了,uv的偏移,形成的深度误差,当在黑色区域的时候,会向非黑区域偏移,形成了深度的效果

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

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

相关文章

《vue3学习手记3》

标签的ref属性 vue3和vue2中的ref属性: 用在普通DOM标签上,获取的是DOM节点 ref用在组件标签上,获取的是组件实例对象 区别在于: 1.vue3中person子组件中的数据父组件App不能直接使用,需要引入并使用defineExpose才可…

List基础与难度题

1. 向 ArrayList 中添加元素并打印 功能描述: 程序创建一个空的 ArrayList 集合,用于存储字符串类型的元素。向该 ArrayList 中依次添加指定的字符串元素。使用增强型 for 循环遍历 ArrayList 中的所有元素,并将每个元素打印输出到控制台。 …

楼宇自控系统如何为现代建筑打造安全、舒适、节能方案

在科技飞速发展的当下,现代建筑对功能和品质的要求日益提升。楼宇自控系统作为建筑智能化的核心技术,宛如一位智慧的“管家”,凭借先进的技术手段,为现代建筑精心打造安全、舒适、节能的全方位解决方案,让建筑真正成为…

绿算轻舟系列FPGA加速卡:驱动数字化转型的核心动力【2】

工业与医疗:精准化的幕后推手 在工业4.0与智慧医疗领域,绿算轻舟FPGA加速卡通过实时信号处理与高精度控制,推动关键场景的技术升级。 工业自动化:在机器视觉质检中,实现亚像素级缺陷检测,产线检测速度大幅…

uniapp-商城-22-顶部模块

这里其实很复杂.我们在前面已经说了这个组件 shop-headbar ,这里来继续说。 该组件实现一个高度的显示以及图片展示,包含logo 名称 后台管理以及避让 导航栏 和 手机的状态栏。 1 整体 代码如下: <template><view class="headr" :style="{ hei…

利用Global.asax在ASP.NET Web应用中实现功能

Global.asax文件&#xff08;也称为ASP.NET应用程序文件&#xff09;是ASP.NET Web应用程序中的一个重要文件&#xff0c;它允许您处理应用程序级别和会话级别的事件。下面介绍如何利用Global.asax来实现各种功能。 Global.asax基本结构 <% Application Language"C#&…

ReportLab 导出 PDF(页面布局)

ReportLab 导出 PDF&#xff08;文档创建&#xff09; ReportLab 导出 PDF&#xff08;页面布局&#xff09; ReportLab 导出 PDF&#xff08;图文表格) PLATYPUS - 页面布局和排版 1. 设计目标2. 开始3. Flowables3.1. Flowable.draw()3.2. Flowable.drawOn(canvas,x,y)3.3. F…

Ubuntu下安装Intel MKL完整指南

&#x1f9e0; Intel MKL 安装指南&#xff08;Ubuntu 完整版&#xff09; 适用平台&#xff1a;Ubuntu 18.04 / 20.04 / 22.04 更新时间&#xff1a;2025 年最新版&#xff08;适配 Intel oneAPI 2024&#xff09; ✅ 一、安装方式选择 安装方式适合用户群体特点推荐程度&…

HackMyVM Gigachad.

Gigachad 信息搜集 ┌──(root㉿kali)-[/home/kali] └─# nmap 192.168.214.85 Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-16 07:42 EDT Nmap scan report for 192.168.214.85 Host is up (0.00011s latency). Not shown: 997 closed tcp ports (reset) PORT S…

大模型全景解析:从技术突破到行业变革

目录 一、引言&#xff1a;人工智能的新纪元 二、大模型发展历史与技术演进 1. 早期探索期&#xff08;2015-2017&#xff09;&#xff1a;从"人工智障"到初具规模 RNN/LSTM架构时代&#xff08;2013-2017&#xff09; Transformer革命&#xff08;2017&#xf…

49、Spring Boot 详细讲义(六)(SpringBoot2.x整合Mybatis实现CURD操作和分页查询详细项目文档)

项目文档:银行借据信息CURD操作和分页查询 一、项目概述 1. 项目简介 本项目旨在使用Spring Boot框架整合MyBatis连接Mysql数据库实现借据信息的增加、删除、修改和查询功能,同时支持分页查询,并提供对应的Restful风格的接口。 2.环境准备 2.1.工具和软件准备 JDK(建议…

youtube视频和telegram视频加载原理差异分析

1. 客户侧缓存与流式播放机制​​ 流式视频应用&#xff08;如 Netflix、YouTube&#xff09;通过​​边下载边播放​​实现流畅体验&#xff0c;其核心依赖以下技术&#xff1a; ​​缓存预加载​​&#xff1a;客户端在后台持续下载视频片段&#xff08;如 DASH/HLS 协议的…

把城市变成智能生命体,智慧城市的神奇进化

智能交通系统的建立与优化 智能交通系统&#xff08;ITS&#xff09;是智慧城市建设的核心部分之一&#xff0c;旨在提升交通管理效率和安全性。该系统利用传感器网络、GPS定位技术以及实时数据分析来监控和管理城市中的所有交通流动。例如&#xff0c;通过部署于道路两侧或交…

Oracle 23ai Vector Search 系列之5 向量索引(Vector Indexes)

文章目录 Oracle 23ai Vector Search 系列之5 向量索引Oracle 23ai支持的向量索引类型内存中的邻居图向量索引 (In-Memory Neighbor Graph Vector Index)磁盘上的邻居分区矢量索引 (Neighbor Partition Vector Index) 创建向量索引HNSW索引IVF索引 向量索引示例参考 Windows 环…

cas 5.3单点登录中心开发手册

文档格式PDF 只读文档。 代码源码。 一、适用对象 需要快速上手出成果的服务端开发人员&#xff0c;具备3年经验java 开发&#xff0c;熟悉数据库&#xff0c;基本的Linux操作系统配置。 工期紧张需要快速搭建以cas为基础的统一登录中心&#xff0c;遇到技术瓶颈&#xff0c…

行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第一部分)

行星际激波在日球层中的传播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第二部分&#xff09;- Chapter 3: Solar and heliospheric physics 行星际激波在日球层中的传播&#xff1a;Propagation of Interplanetary Shocks in the Hel…

Linux——消息队列

目录 一、消息队列的定义 二、相关函数 2.1 msgget 函数 2.2 msgsnd 函数 2.3 msgrcv 函数 2.4 msgctl 函数 三、消息队列的操作 3.1 创建消息队列 3.2 获取消息队列并发送消息 3.3 从消息队列接收消息recv 四、 删除消息队列 4.1 ipcrm 4.2 msgctl函数 一、消息…

蓝桥杯常考排序

1.逆序 Collections.reverseOrder() 方法对列表进行逆序排序。通过 Collections.sort() 方法配合 Collections.reverseOrder()&#xff0c;可以轻松实现从大到小的排序。 import java.util.ArrayList; // 导入 ArrayList 类&#xff0c;用于创建动态数组 import java.util.C…

ILGPU的核心功能使用详解

什么是ILGPU? ILGPU 是一种用于高性能 GPU 程序的新型 JIT&#xff08;即时&#xff09;编译器 &#xff08;也称为 kernels&#xff09;编写的 .基于 Net 的语言。ILGPU 完全 用 C# 编写&#xff0c;没有任何原生依赖项&#xff0c;允许您编写 GPU 真正可移植的程序。…

金融的未来

1. DeFi的爆发式增长与核心使命 DeFi&#xff08;去中心化金融&#xff09;的使命是重构传统金融基础设施&#xff0c;通过区块链技术实现更高的透明度、可访问性、效率、便利性和互操作性。其增长数据印证了这一趋势&#xff1a; TVL&#xff08;总锁定价值&#xff09;爆炸…