
【unity shader 入门精要】CH5-2 语义
一个语义可以使用的寄存器只能处理4个浮点值(float)。因此,如果我们想要定义矩阵类型,如float3×4、float4×4等变量就需要使用更多的空间。一种方法是,把这些变量拆分成多个变量,例如对于float4×4的矩阵类型,我们可以拆分成4个float4类型的变量,每个变量存储了矩阵中的一行数据。
发布日期:2021-05-07 01:50:09
浏览次数:28
分类:精选文章
本文共 895 字,大约阅读时间需要 2 分钟。
文章目录
Unity提供的CG/HLSL语义
语义是一个赋给Shader输入或输出的字符串,这个字符串表达了这个参数的含义。
这些语义可以让Shader知道从哪里读取数据,并把数据输出到哪里。
Unity并没有支持所有的语义。
供查阅
通常情况下,这些输入输出变量并不需要有特别的意义,我们可以自行决定这些变量的用途。
SV语义
在DirectX 10以后,有了一种新的语义类型,以SV开头,就是系统数值语义(system-value semantics)。
这些语义在渲染流水线中有特殊的含义。
我们使用SV_POSITION语义去修饰顶点着色器的输出变量pos,那么就表示pos包含了可用于光栅化的变换后的顶点坐标(即齐次裁剪空间中的坐标)。
用这些语义描述的变量是不可以随便赋值的,因为流水线需要使用它们来完成特定的目的,例如渲染引擎会把用SV_POSITION修饰的变量经过光栅化后显示在屏幕上。读者有时可能会看到同一个变量在不同的Shader里面使用了不同的语义修饰。例如,一些Shader会使用POSITION而非SV_POSITION来修饰顶点着色器的输出。
Unity 支持的语义
通常情况下,一个模型的纹理坐标组数一般不超过2,即我们往往只使用TEXCOORD0和TEXCOORD1。
在Unity内置的数据结构体appdata_full中,它最多使用了6个坐标纹理组。


其他文章
专题文章:
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月30日 18时56分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
物联网、5G世界与大数据管理
2021-05-09
Cassandra与Kubernetes
2021-05-09
.NET应用框架架构设计实践 - 概述
2021-05-09
Rust 内置 trait :PartialEq 和 Eq
2021-05-09
Hibernate(十四)抓取策略
2021-05-09
[菜鸟的设计模式之旅]观察者模式
2021-05-09
Spring-继承JdbcDaoSupport类后简化配置文件内容
2021-05-09
Java基础IO流(一)
2021-05-09
Hibernate入门(四)---------一级缓存
2021-05-09
MySQL事务(学习笔记)
2021-05-09
一个web前端开发者的日常唠叨
2021-05-09
内存分配-slab分配器
2021-05-09
技术写作技巧分享:我是如何从写作小白成长为多平台优秀作者的?
2021-05-09
Jupyter Notebook 暗色自定义主题
2021-05-09
[Python学习笔记]组织文件
2021-05-09
基于Redo Log和Undo Log的MySQL崩溃恢复流程
2021-05-09
从RocketMQ的Broker源码层面验证一下这两个点
2021-05-09
如何正确的在项目中接入微信JS-SDK
2021-05-09
纵览全局的框框——智慧搜索
2021-05-09
快服务流量之争:如何在快服务中占领一席之地
2021-05-09