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

HLSL语法

语义

语义的概念

语义xxxx:+ 大写单词,是用来限定输入值的来源输出值的去向,其中那些大写单词都是系统提供的,我们需要用他们去填充我们的参数,然后传到顶点着色器和片元着色器中,进行进一步的计算,最后再通过语义作用到渲染目标上。

struct VertexIn
{float3 pos : POSITION;	//告诉系统将顶点坐标填充到pos中float4 color : COLOR;
};struct VertexOut
{float4 posH : SV_POSITION;float4 color : COLOR;
};

比如“vertex :POSITION” ,POSITION将告诉Unity,把模型的顶点坐标填充到参数vertex中,如果没有语义来限定这些参数的输入输出,渲染器将完全不知道用户的输入输出是什么,自然会导致显示结果错误。

常用的语义

应用阶段到顶点着色器时用常用的语义如下:

  • POSITION:模型空间中的顶点坐标
  • NORMAL:模型空间中的法线方向
  • TANGENT:模型空间中的切线方向
  • TEXCOORDn:模型空间中第n组纹理坐标
  • COLOR:描述该变量是一个颜色

顶点着色器传递数据给片元着色器时常用的语义如下:

  • SV_POSITION:说明该顶点的位置在从顶点着色器输出后,后续的着色器都不能改变它的值,作为光栅化时最终确定的像素位置
  • COLOR0:输出第一组顶点颜色,不是必须
  • COLOR1:输出第二组顶点颜色,不是必须
  • TEXCOORDn:输出第n组纹理坐标,不是必须

片元着色器输出数据到unity阶段常用的语义如下:

  • SV_Target:说明输出的颜色值将会直接保存到渲染目标视图的后备缓冲区对应位置

HLSL变量命名的一些约定

在阅读HLSL代码的时候你将会遇到诸如PosWPosH这样带字母后缀的变量名,那么它们有什么含义呢?其实该字母表达了当前点或向量所处的空间:

字母后缀 含义
L 处于物体局部空间(Local Space)
W 处于世界空间(World Space)
V 处于观察空间(View Space)
H 处于齐次裁减空间(Homogeneous space)
http://www.hskmm.com/?act=detail&tid=30435

相关文章:

  • DirectX12初始化
  • 实验2
  • CF2159B
  • 登录校验---Filter过滤器
  • 日志|Ajax
  • 环境变量 Path 配置实战指南:从“能用”到“专业”--两种配置环境变量的方法
  • 10月13日
  • Ubuntu22.04安装CH340/CH341驱动
  • 玄机蓝队靶场_应急响应_198:实战Live勒索病毒溯源排查
  • JetBrains Mono字体好看、及其它
  • STM32——UART
  • WebApi 交叉观察者- IntersectionObserver复盘
  • [KaibaMath]1009 关于||a|-|b||≤|a+b|的证明
  • AMPopTip - 优雅的iOS动画提示框库
  • 2026年深度对比值得推荐的10个在线客服系统
  • 文件名中有空格比较烦人
  • 20232421 2024-2025-1 《网络与系统攻防技术》实验一实验报告
  • 十月总结
  • 20251013 之所思 - 人生如梦
  • Markdown 基本语法
  • 简单工单系统的实现-客服系统中增加创建工单功能
  • 日总结 10
  • # 20232421 2024-2025-1 《网络与系统攻防技术》实验一实验报告
  • 20232317 2025-2026-1《网络与系统攻防技术》实验一实验报告
  • 给一个字符串数组,输出不同的部分
  • 连接 USB 设备
  • SpringBoot-day1(快速上手SpringBoot,SpringBoot简介,SpringBoot基础配置,属性配置,yaml文件) - a
  • Chroma私有化:本地部署完整方案
  • 嵌入式-C++面经2
  • PHP转Go系列 | 如何将 PHP 项目快速迁移到 Go 上?