Unity 入门精要00---Unity提供的基础变量和宏以及一些基础知识

头文件引入:

XXPROGRAM

...

#include "UnityCG.cginc";

...

ENDXX

常用的结构体(在UnityCg.cginc文件中):在顶点着色器输入和输出时十分好用 。

关于如何使用这些结构体,可在Unity安装文件目录/Editor/Data/CGIncludes下打开查看

一些常用的函数

 此书是以Build-in管线为基础,有些函数的名称和参数已经改变。Build-in 到URP转变手册可参考内置管线Shader升级到URP详细手册 - 简书

 Unity 提供的CG/HLSL语义

何为语义?:语义就是赋给Shader脚本的输入和输出文档,让Shader知道从哪里读取数据,从哪里输出数据

 

 

在v2f结构体的TEXCOORDn中的具体语义可以由我们自己定义,换句话说,对于任何需要传输坐标的情形,我们都可以采用TEXCOORDn去描述。 更详细的知识可参考Directx文档

DirectX 编程 - UWP applications | Microsoft Learn

关于渲染平台的差异

在OpenGL和DirectX的纹理坐标的y轴是相反的,如果使用了纹理贴图和后处理效果而不注重屏幕坐标空间在不同渲染平台的差异的话,会出现纹理翻转。因此,为了解决这个问题 我们需要翻转y轴。一般情况下,Unity会为我们自动处理这个问题,但我们若开启了抗锯齿(Edit->Project Settings->Quality->Anti Aliasing)的同时使用了渲染纹理,Unity就不会为我们翻转纹理,默认情况下是符合DirectX的平台规定。当我们此时的屏幕特效只需要使用一张渲染图像,即只采样一次,就不需要在意纹理翻转的情况,因为在我们调用Graphics.Blit函数时,Unity已经为我们对屏幕图像的采样坐标进行了处理,只需要正常采样过程处理屏幕图像就行了,但如果要同时处理多张渲染图像(有抗锯齿)举个例子,对于Part-Bloom效果,我们需要同时提取需要高亮部分渲染出一张纹理,再将起模糊且高亮,这种情况就使用了多张纹理,手动进行纹理翻转。

采用如下代码进行纹理翻转。 

Shader中的数据类型

对于只使用方向的单位向量,用fixed就足够了 

Shader Target。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值