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

Unity中Shader的屏幕坐标

文章目录

  • 前言
  • 一、屏幕坐标
    • 1、屏幕像素的坐标
    • 2、屏幕坐标归一化
  • 二、在Unity中获取 当前屏幕像素 和 总像素
    • 1、获取屏幕总像素,使用_ScreenParams参数
    • 2、获取当前片段上的像素
      • 怎么使用:在片元着色器传入参数时使用


前言

Unity中Shader的屏幕坐标


一、屏幕坐标

1、屏幕像素的坐标

请添加图片描述

2、屏幕坐标归一化

使用公式: 屏幕归一化坐标 = 当前像素 / 总像素

请添加图片描述


二、在Unity中获取 当前屏幕像素 和 总像素

1、获取屏幕总像素,使用_ScreenParams参数

_ScreenParams
屏幕的相关参数,单位为像素。
x表示屏幕的宽度
y表示屏幕的高度
z表示1+1/屏幕宽度
w表示1+1/屏幕高度

2、获取当前片段上的像素

UNITY_VPOS_TYPE screenPos : VPOS
1.当前片断在屏幕上的位置(单位是像素,可除以_ScreenParams.xy来做归一化),此功能仅支持#pragma target 3.0及以上编译指令
2.大部分平台下VPOS返回的是一个四维向量,部分平台是二维向量,所以需要用UNITY_VPOS_TYPE来统一区分.
3.在使用VPOS时,就不能在v2f中定义SV_POSITION,这样会冲突,所以需要把顶点着色器的输入放在()的参数中,并且SV_POSITION添加out.

怎么使用:在片元着色器传入参数时使用

fixed4 frag (v2f i,UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target
{
}

VPOS这个类型因为在不同平台不统一,有的是 float2 有的是 float4 ,所以使用Unity提供的类型 UNITY_VPOS_TYPE,让Unity自动处理

当使用UNITY_VPOS_TYPE screenPos : VPOS作为片元着色器的输入时,需要对顶点着色器的输入做出修改

修改后代码:

Shader "MyShader/P0_10_2"
{SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"sampler2D _MainTex;float4 _MainTex_ST;struct appdata{float4 vertex : POSITION;};struct v2f{float2 uv : TEXCOORD0;};//在顶点着色器的输入处,不用appdata,直接使用用到的参数,防止 SV_POSITION 重复定义v2f vert (float4 vertex : POSITION,out float4 pos : SV_POSITION){v2f o;pos = UnityObjectToClipPos(vertex);return o;}fixed4 frag (v2f i,UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target{float2 screenUV = screenPos.xy / _ScreenParams.xy;return fixed4(screenUV,0,0);}ENDCG}}
}

效果:
在这里插入图片描述

输出屏幕归一化的x的效果:return screenUV.x;

在这里插入图片描述

输出屏幕归一化的y的效果:return screenUV.y;

在这里插入图片描述

相关文章:

Unity中Shader的屏幕坐标

文章目录 前言一、屏幕坐标1、屏幕像素的坐标2、屏幕坐标归一化 二、在Unity中获取 当前屏幕像素 和 总像素1、获取屏幕总像素,使用_ScreenParams参数2、获取当前片段上的像素怎么使用:在片元着色器传入参数时使用 前言 Unity中Shader的屏幕坐标 一、屏幕坐标 1、屏幕像素的坐…...

springboot MongoDB 主从 多数据源

上一篇,我写了关于用一个map管理mongodb多个数据源(每个数据源,只有单例)的内容。 springboot mongodb 配置多数据源 临到部署到阿里云的测试环境,发现还需要考虑一下主从的问题,阿里云买的数据库&#x…...

【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析

目录 1 描述性统计(Descriptive Statistics) 2 数据分组和聚合 3 数据透视表 4 相关性分析 1 描述性统计(Descriptive Statistics) 描述性统计是一种用于汇总和理解数据集的方法,它提供了关于数据分布、集中趋势和…...

Unity 切换场景后场景变暗

问题 Unity版本:2019.4.34f1c1 主场景只有UI,没有灯光,天空盒;其他场景有灯光和天空盒所有场景不烘焙主场景作为启动场景运行,切换到其他场景,场景变暗某一个场景作为启动场景运行,光影效果正…...

RabbitMQ学习笔记

1、什么是MQ? MQ全称message queue(消息队列),本质是一个队列,FIFO先进先出,是消息传送过程中保存消息的容器,多 用于分布式系统之间进行通信。 在互联网架构中,MQ是一种非常常见的…...

【C# Programming】类、构造器、静态成员

一、类 1、类的概念 类是现实世界概念的抽象:封装、继承、多态数据成员: 类中存储数据的变量成员方法: 类中操纵数据成员的函数称为成员方法对象:类的实例类定义 class X {…} var instance new X(…); 2、实例字段 C#中…...

软件层面缓存基本概念与分类

缓存 缓存基本概念(百度百科) 缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快…...

单片机有哪些分类?

单片机有哪些分类? 1.AVR单片机-----速度快,一个时钟周期执行一条指令,而普通的51单片机需要12个时钟周期执行一条指令。当然,Atmel公司出品的AT89LP系列单片机也是一个时钟执行一条指令,但目前还未普及。AVR单片机比51单片机多…...

高阶数据结构-----三种平衡树的实现以及原理(未完成)

TreeMap和TreeSet的底层实现原理就是红黑树 一)AVL树: 1)必须是一棵搜索树:前提是二叉树,任取一个节点,它的左孩子的Key小于父亲节点的Key小于右孩子节点的Key,中序遍历是有序的,按照Key的大小进行排列,高度平衡的二叉…...

北斗高精度组合导航终端

UWB(Ultra-Wideband)、卫星定位(GNSS),以及IMU(Inertial Measurement Unit)的组合定位系统结合了多种传感器和定位技术,以提供高精度、高可靠性的位置估计。这种组合定位系统在各种应…...

低代码平台是否能替代电子表格?

在计算机技术普及之前,会计、助理或者是销售人员,都需要用纸和笔来记录和维护每一笔交易。计算机技术兴起之后,一项技术发明——电子表格的出现改变了低效的状况。电子表格的第一个版本出现在1977年,一个名为“VisiCalc”的程序。…...

qt多个信号如何关联一并处理

主要方法&#xff1a; 首先&#xff0c;需要创建一个包含自定义信号和槽的Qt类。假设要创建一个名为MyObject的类&#xff0c;并在其中定义一个自定义信号和一个槽。这个类的头文件可能如下所示&#xff1a; #ifndef MYOBJECT_H #define MYOBJECT_H#include <QObject>c…...

【python爬虫】12.建立你的爬虫大军

文章目录 前言协程是什么多协程的用法gevent库queue模块 拓展复习复习 前言 照旧来回顾上一关的知识点&#xff01;上一关我们学习如何将爬虫的结果发送邮件&#xff0c;和定时执行爬虫。 关于邮件&#xff0c;它是这样一种流程&#xff1a; 我们要用到的模块是smtplib和emai…...

2023数学建模国赛C题思路--蔬菜类商品的自动定价与补货决策

C 题 蔬菜类商品的自动定价与补货决策 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c;商超通常会根据各商品的历史销售和需 求情况每天进…...

vue2与vue3的使用区别

1. 脚手架创建项目的区别&#xff1a; vue2: vue init webpack “项目名称”vue3: vue create “项目名称” 或者vue3一般与vite结合使用: npm create vitelatest yarn create vite2. template中结构 vue2: template下只有一个元素节点 <template><div><div…...

Apache httpd漏洞复现

文章目录 未知后缀名解析漏洞多后缀名解析漏洞启动环境漏洞复现 换行解析漏洞启动环境漏洞复现 未知后缀名解析漏洞 该漏洞与Apache、php版本无关&#xff0c;属于用户配置不当造成的解析漏洞。在有多个后缀的情况下&#xff0c;只要一个文件含有.php后缀的文件即将被识别成PHP…...

【漏洞复现】时空智友企业流程化管控系统文件上传

漏洞描述 通过时空智友该系统,可让企业实现流程的自动化、协同上提升、数据得洞察及决策得优化,来提高工作效率、管理水平及企业的竞争力。时空智友企业流程化 formservice接口处存有任意文件上传漏洞,未经认证得攻击者可利用此接口上传后门程序,可导致服务器失陷。 免责…...

elasticsearch的DSL查询文档

DSL查询分类 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如&#xff1a;match_all 全文检索&#xff08;full text&#xff09;查询&#xff1a;利用分词器对用户输入内容分词&#xff0c;然后去倒排索引库中匹配。例如&#xff1a; match_query multi_ma…...

IP地址、子网掩码、网络地址、广播地址、IP网段

文章目录 IP地址IP地址分类子网掩码网络地址广播地址IP网段 本文主要讨论iPv4地址。 IP地址 实际的 IP 地址是一串32 比特的数字&#xff0c;按照 8 比特&#xff08;1 字节&#xff09;为一组分成 4 组&#xff0c;分别用十进制表示然后再用圆点隔开&#xff0c;这就是我们平…...

ffmpeg-android studio创建jni项目

一、创建native项目 1.1、选择Native C 1.2、命名项目名称 1.3、选择C标准 1.4、项目结构 1.5、app的build.gradle plugins {id com.android.application }android {compileSdk 32defaultConfig {applicationId "com.anniljing.ffmpegnative"minSdk 25targetSdk 32…...

5步轻松打造随身游戏库:Playnite便携版终极配置指南

5步轻松打造随身游戏库&#xff1a;Playnite便携版终极配置指南 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https…...

服务机器人开发终极指南:从NAO到Pepper的完整编程实战

服务机器人开发终极指南&#xff1a;从NAO到Pepper的完整编程实战 【免费下载链接】awesome-robotics A list of awesome Robotics resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-robotics 服务机器人开发是一个融合机械设计、人工智能与编程的跨学科…...

突破抢票难题:DamaiHelper自动化抢票工具全攻略

突破抢票难题&#xff1a;DamaiHelper自动化抢票工具全攻略 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper DamaiHelper是一款基于Python开发的大麦网自动化抢票工具&#xff0c;通过浏览器自动化…...

VisualCppRedist AIO:解决Windows运行库管理难题的一站式方案

VisualCppRedist AIO&#xff1a;解决Windows运行库管理难题的一站式方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 一、直面运行库困境&#xff1a;三大场…...

Qwen3.5-9B部署教程:GPU内存映射优化+O_DIRECT加速模型加载

Qwen3.5-9B部署教程&#xff1a;GPU内存映射优化O_DIRECT加速模型加载 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。该模型支持多模态理解&#xff08;图文输入&#xff09;和长上下文处理&#xff0…...

芯片研发为什么总是延期?问题不在技术,在管理没闭环

一个芯片项目失败&#xff0c;事后复盘&#xff0c;技术问题往往只占一小部分。更多的时候&#xff0c;是计划没做好&#xff0c;执行过程没人盯&#xff0c;出了问题没人协调&#xff0c;最后交付的时候才发现跑偏了很久。这是行业里非常普遍的现象。法约尔在一百年前提出管理…...

2026别墅地下室保养升值的最好方法:电渗透技术的应用

别墅地下室随着人们日益增长的生活质量&#xff0c;功能也逐渐变得丰厚。当今时代不少业主都会在地下室加装健身房&#xff0c;酒窖以及影视厅等。这些功能区建设完毕初期给人无不良影响&#xff0c;但是随着时间的渐长&#xff0c;湿气不断渗透&#xff0c;首先空气潮湿度会给…...

告别迷茫!Quartus II 13.1 从新建工程到烧录FPGA的保姆级避坑指南

Quartus II 13.1实战指南&#xff1a;从零开始玩转FPGA开发 第一次打开Quartus II 13.1时&#xff0c;那个灰蒙蒙的界面和密密麻麻的菜单栏确实容易让人望而生畏。作为Altera&#xff08;现已被Intel收购&#xff09;旗下经典的FPGA开发工具&#xff0c;它在高校实验室和企业研…...

Unity性能优化实战:用Job System并行处理海量数据,告别主线程卡顿

Unity性能优化实战&#xff1a;用Job System并行处理海量数据&#xff0c;告别主线程卡顿 当你的游戏场景中出现成千上万的粒子在飞舞&#xff0c;或是数百个NPC同时进行复杂的AI决策时&#xff0c;是否经常遇到帧率骤降的困扰&#xff1f;作为Unity开发者&#xff0c;我们每天…...

Qwen3-14B镜像部署指南:单卡RTX 4090D上快速启用中文大模型推理

Qwen3-14B镜像部署指南&#xff1a;单卡RTX 4090D上快速启用中文大模型推理 1. 镜像概述与核心优势 Qwen3-14B私有部署镜像是专为RTX 4090D显卡优化的中文大模型推理解决方案。这个镜像最大的特点就是"开箱即用"——所有环境依赖、模型权重、优化组件都已预装配置好…...