Unity2018的HDRPStandard材质分析笔记(一)

本文是关于Unity2018 High Definition Render Pipeline (HDRP) 中Standard材质的分析笔记,主要关注Forward管线。内容涉及直接引用的Library,如Common、Wind、FragInputs等,以及在Vert和Frag中的处理流程,包括顶点信息的计算和打包。文章未涵盖多层材质、曲面细分和延迟渲染。
摘要由CSDN通过智能技术生成

虽然都快2020了,但是项目用的是2018版本,最近要改下材质,所以分析一下18版的HDRP Standard。

暂时不考虑多层材质和曲面细分,并且项目用的是Forward管线,也暂时不分析Deffered。

Forward

直接引用的Library

先简单看看shader中直接引用的库。

Common

开头介绍了一些library编写的惯例:

  • 变量后缀
  1. WS: world space
  2. RWS: Camera-Relative world space
  3. VS: view space
  4. OS: object space
  5. CS: Homogenous clip spaces
  6. TS: tangent space
  7. TXS: texture space
  • 向量,向量总是指向外侧(为光照做准备),大写字母表示已经归一化(如果不是会加前缀un),如下:
  1. V: View vector
  2. L: Light vector
  3. N: Normal vector
  4. H: Half vector
  • 用input/output作为结构体的变量名。
  • 不要使用“in”,只使用“out”和“inout”。声明“out”的参数要放在最后。也不要使用“inline”,没什么作用。
  • 所有的uniform都要用cb传,原因是在computer shader中需要保证cb在各个kernels一致,如果是global namespace就会自动优化没有用到的uniform。
  • 需要在C#和hlsl共享结构体的定义,由于hlsl会在float4上对齐,有些变量需要填充。也因此都用float4来避免这种问题,比如不要用SetGlobalFloatArray或者SetComputeFloatParams函数,传递float数组时先转换成float4数组,并在hlsl里做下列的操作转换回float数组。
uniform float4 packedArray[3];
static float unpackedArray[12] = (float[12])packedArray;

然后是一些跨平台的工作。

最后定义了一些常用函数,有一点类似原UnityCG的功能。

Wind

风相关的属性和函数。

FragInputs

申明了varying/interpolator的结构体。附带Debug代码。

ShaderPass.cs

定义每种Pass为0 - n,是自动生成的。

LitProperties

定义属性。

ShaderVariables

定义了HDRP的属性。附带一些相关函数。

Lighting

光照、阴影、采样、区域光及IBL

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值