unity 定点着色器输入值

2024-06-09 14:38
文章标签 定点 输入 unity 着色器

本文主要是介绍unity 定点着色器输入值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

unity shader有3中类型,分别是固定着色器,顶点片段着色器和表面着色器,
固定着色器固定功能着色器为固定功能渲染管线的具体表现,功能较简单兼容比较老的机器基本都快被淘汰了。
表面着色器是对定点片源着色器的封装,封装了好多创建的光照模型,降低shader的书写门槛,但是不方便理解shader实现原理。
定点和片段着色器,顾名思义是由定点着色器和片段着色器组成的,灵活度比较高,但是需要有一定的CG基础,片段着色器输入内容是由定点着色器提供的,这里主要说一下顶点着色器的输入。

顶点着色器输入的结构体语义包含:

POSITION:顶点的位置,通常为float3或float4 类型;
TANGENT:顶点法线向量,通常为float3类型;
NORMAL:切线向量(通常用在法线贴图中),通常为float4 类型;
TEXCOORD0:第一UV坐标,通常为float2,(TEXCOORDx纹理坐标,如果用float4类型存储,x、y、z分量如果没有值,默认是0,w分量默认为1)
TEXCOORD1:第二UV坐标
TEXCOORD2:第三UV坐标
TEXCOORD3:第四UV坐标
COLOR:每一个顶点的颜色值,通常为float4 类型;

position,tangent,normal,color比较好理解,就是定点的属性值,但是这个TEXCOORD的东西,困扰了我好久,什么是第一UV坐标,什么是第二UV坐标呢?由于自己不会建模,所以今天特意查了相关资料才明白一点儿,这个TEXCOORD其实和模型mesh的uv是对应的,
在这里插入图片描述

这个mesh属性里面可以看到它包含了uv和uv2,3d软件在导出模型的mesh的时候,是可以包含多个通道uv信息的,常见的模型一般都是单uv通道类型的,uv包含的是贴图在模型上面的对应位置信息
在这里插入图片描述

uv2比较特殊,uv2则主要是用来存储光照贴图用的纹理坐标用的,当勾选模型的generate lightmap uvs,进行烘焙的时候,如果mesh的uv2为空,unity会为mesh创建新的uv2,如果已经存在,则会用光照贴图去填充该纹理坐标,也就是说unity的光照贴图会自动占用uv2通道。
在这里插入图片描述
如果理解了mesh的uv,uv2,在来看shader输入语义中的TEXCOORD0,TEXCOORD1就容易理解了,TEXCOORD0就是模型顶点贴图的空间坐标,TEXCOORD1就是模型顶点光照贴图的空间坐标
回顾一下unity渲染管线:参考 https://blog.csdn.net/u012722551/article/details/104276327
在应用阶段,获取模型的定点数据,定点着色器输入的值都是从模型上面读取的
几何阶段,定点数据传入到定点着色器,在由定点着色器进行数据转换,和部分逻辑处理,通过结构体传送到片段着色器,定点着色器操作对象是定点,片段着色器操作对象是三个定点构成的像素面,逐像素进行处理然后输出该像素点的颜色。

空间变换:模型空间-世界空间-观察空间-裁剪空间:参考https://my.oschina.net/u/918889/blog/1858627
Unity的Shader中,顶点着色器输入的值所对应的空间是模型空间,语义为POSITION,
UnityObjectToClipPos 方法实现了从模型坐标空间,转变为裁剪空间的操作。
在这里插入图片描述

这篇关于unity 定点着色器输入值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045466

相关文章

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

当你输入一个网址后都发生什么

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您

Unity Adressables 使用说明(六)加载(Load) Addressable Assets

【概述】Load Addressable Assets Addressables类提供了加载 Addressable assets 的方法。你可以一次加载一个资源或批量加载资源。为了识别要加载的资源,你需要向加载方法传递一个键或键列表。键可以是以下对象之一: Address:包含你分配给资源的地址的字符串。Label:包含分配给一个或多个资源的标签的字符串。AssetReference Obj