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.pswp.cn/web/76064.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76064.shtml
英文地址,請注明出處:http://en.pswp.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;爆炸…