Unity Shader - SV_POSITION 和 TEXCOORD[N] 的varying 在 fragment shader 中输出的区别

news2024/12/28 22:00:09

起因

因另一个TA同学问了一个问题
我抱着怀疑的心态,测试了一下
发现 varying 中的 sv_position 和 texcoord 的值再 fragment shader 阶段还真的不一样
而且 sv_position 还不是简单的 clipPos/clipPos.w 的操作

因此我自己做了一个试验:

在这里插入图片描述

结果还是不一样的

在这里插入图片描述


搜索发现

无意发现 [Unity]屏幕空间(视口)坐标(viewport coordinate)的几种计算方法对比分析 这篇文章中的:

在这里插入图片描述

也就说, clipPos to fragment shader 后的值是:x: [0~width], y: [0~height]
因此,fragment shader 中 clipPos.xy / _ScreenParams.xy = ScreenPos_Normalized ,也就是 x: [0~1], y: [0~1]


查看MSDN的 dx10 文档

查看了 dx10 的 语义 文档,发现有如下说明


在这里插入图片描述


在这里插入图片描述


OK,果然返回的是像素坐标,也就是说: SV_Position 在 fragment shader 使用时,就是 x : [0~width], y : [0~height]


最终 texcoord 和 sv_position 转为 0~1 的 normalized 坐标对比效果

shader 如下:

在这里插入图片描述

可以看到转换成了,一模一样
在这里插入图片描述


References

  • [Unity]屏幕空间(视口)坐标(viewport coordinate)的几种计算方法对比分析
  • 语义

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

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

相关文章

Ext4文件系统介绍 - 实战篇

本文主要通过dd,hexdump和dumpe2fs工具分析ext4的磁盘二进制数据,加深对ext4文件系统的印象,要想理解本建议先阅读下Ext4文件系统介绍 - 理论篇_nginux的博客-CSDN博客。 磁盘超级块数据分析 根据理论篇我们知道ext4 layout中前1024字节是x…

Flask 使用Flask的session来保存用户登录状态例子

使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。 当用户发送POST请求到/login接口时,代码会获取请求中的用户名和密码。如果用户名和密码匹配(在示例中是admin和admin123),则会将用户名保存在session中&…

Scratch 放置建筑

Scratch 放置建筑 本程序的功能是放置和删除建筑。点击鼠标时建筑会复制并从初始位置向鼠标指针移动,每次复制都更换外观,距离鼠标指针较近时停止移动并调至垂直方向,延时0.5秒。延时过后鼠标指针接触到建筑每隔0.1秒进行判断,3次…

HOT62-N皇后

leetcode原题链接:N皇后 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返…

灵活用工服务平台是怎样的?

灵活用工服务平台是为企业提供灵活用工人员招募、管理和支付等服务的平台。这些平台通常会建立一套在线系统,帮助企业发布岗位需求,筛选和招募合适的灵活用工人员,管理他们的工作时间和报酬。 企业选择做灵活用工的原因有这些: 1…

虚幻插件Landscaping Landscaping Mapbox

虚幻插件Landscaping & Landscaping Mapbox Landscaping offers an easy way to import GIS data as single Landscape or World Composition (UE4) or World Partition (UE5) or Procedural/Static Mesh. 提供了一种非常简单的方式来导入GIS数据,可以生成Lands…

力扣C++|一题多解之数学题专场(1)

目录 7. 整数反转 9. 回文数 12. 整数转罗马数字 13. 罗马数字转整数 29. 两数相除 7. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 -如果反转后整数超过 32 位的有符号整数的范围 [2^31, 2^31 -1] ,就返回 0。…

springboot项目中添加自定义日志

文章目录 当前项目使用的springboot为 2.2.2.release。低版本的话logging下的子标签有可能不是这样的。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELE…

vue 项目优化

去除冗余的css 消除框架中未使用的CSS,初步达到按需引入的效果 使用背景&#xff1a;vue2.x, webpack3.x 使用插件&#xff1a;purifycss-webpack 安装&#xff1a; npm i purifycss-webpack purify-css glob-all -D安装后各个插件的版本&#xff1a; “glob-all”: “^3.3.…

基于linux下的高并发服务器开发(第一章)- GDB调试(3)1.15

04 / GDB命令&#xff1a;断点操作 其中num代表断点编号&#xff0c;Type&#xff08;类型&#xff09;为断点&#xff08;breakpoint&#xff09;&#xff0c;Disp为断点状态&#xff0c;Enb是yes代表为有效断点&#xff0c;adress为断点地址&#xff0c;What说明断点的在那个…

APACHE KAFKA本机Hello World教程

目标 最近想要简单了解一下Apache Kafka&#xff0c;故需要在本机简单打个Kafka弄一弄Hello World级别的步骤。 高手Kafka大佬们&#xff0c;请忽略这里的内容。 步骤 Apacha Kafka要求按照Javak8以上版本的环境。从官网下载kafka并解压。 启动 # 生产kafka集群随机ID KA…

游戏AI的崛起:腾讯、网易等企业引领行业变革

随着游戏AI技术的迅猛发展&#xff0c;游戏行业正在经历一场前所未有的变革。在这个数字化时代&#xff0c;腾讯、网易等行业领先企业正以惊人的步伐在游戏AI领域取得重要进展。他们已经进入了游戏AI的2.0阶段&#xff0c;实现了内容多元化和行为智能化。尤其引人瞩目的是&…

SOLIDWORKS PDM—文件类别的限定

SOLIDWORKS产品数据管理 (PDM) 解决方案可帮助您控制设计数据&#xff0c;并且从本质上改进您的团队就产品开发进行管理和协作的方式。使用 SOLIDWORKS PDM Professional&#xff0c;您的团队能够&#xff1a;1. 安全地存储和索引设计数据以实现快速检索&#xff1b;2. 打消关于…

【GUI】基于开关李雅普诺夫函数的非线性系统稳定(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

superset安装

1、拖动安装包 sh Miniconda3-latest-Linux-x86_64.sh安装路径&#xff1a; /usr/local/miniconda3 2、配置环境变量 在/etc/profile中添加两句 export CONDA_HOME/usr/local/miniconda3 export PATH$PATH:$CONDA_HOME/bin重新加载环境变量 source /etc/profile3、取消激活…

javascript循环数组有什么方法

javascript循环数组的方法 1、循环遍历数组 问题&#xff1a;想要很容易地访问数组的所有元素。 for循环可以用来访问数组的每一个元素。数组从0开始&#xff0c;而且数组属性length用来设定循环结束。 2、按顺序存储和访问值 问题&#xff1a;想要以这样一种方式来存储值&a…

怎么转发别人的朋友圈到自己朋友圈?

一键转发朋友 搜索指定好友&#xff0c;选择好友朋友圈内容&#xff0c;点击转发 2.转发后会跳到【发朋友圈】页面&#xff0c;可直接发送&#xff0c;也可二次编辑&#xff08;修改文案&#xff09;

SpringCloud——消息驱动Stream

屏蔽底层消息中间件MQ的差异&#xff0c;降低切换成本&#xff0c;统一消息的编程模型。 生产者 一、依赖 spring-cloud-starter-stream-rabbit &#xff08;rabbitMQ中间件&#xff09; 二、配置文件 server:port: 8801spring:application:name: cloud-stream-providercl…

从C语言到C++_26(set+map+multiset+multimap)力扣692+349+牛客_单词识别

目录 1. 关联式容器 1.1 树形结构的关联式容器 2. set的相关介绍 2.1 set的构造和迭代器 2.2 set的容量和操作函数 2.3 set使用代码 2.4 multiset使用 3. map的相关介绍 3.1 键值对 3.2 map的构造和迭代器 3.3 map的容量和操作函数 3.4 map使用代码 3.5 multimap使…

ai绘画软件免费下载哪个好用?探索ai绘画生成器

曾经有一个年轻的艺术爱好者&#xff0c;名叫小明。他对绘画充满热情&#xff0c;渴望能够通过绘画表达自己的创造力和想法。然而&#xff0c;他并没有接受过正规的美术训练&#xff0c;也没有负担得起的昂贵绘画软件。因此&#xff0c;他开始思考ai绘画软件免费下载哪个好用&a…