UnityUniversalRP内置Shader解析pdf下载pdf下载

UnityUniversalRP内置Shader解析百度网盘pdf下载

作者:
简介:本篇主要提供UnityUniversalRP内置Shader解析pdf下载
出版社:清华大学出版社
出版时间:2021-10
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

内容简介

  《Unity Universal RP内置Shader解析》是一部系统讲解Unity Universal Render Pipeline内置Shader的应用型图书,旨在使读者能够了解URP与传统渲染流水线Shader的不同之处,让读者尽快在URP项目中编写出所需的Shader。
  《Unity Universal RP内置Shader解析》采用串联讲解的方式编写而成,主要分为三部分:
  首部分包含第1章,主要为了给读者普及URP的基本知识、项目的配置方法、内置Shader的不同用途以及Package中不同包含文件的作用,使之前还没有接触过URP的读者在学习之前能够全面了解UPR;第二部分包含第2~5章,主要讲解了URP中非常复杂的内置Shader-Lit,以及Shader中关联到的包含文件、函数和宏定义;第三部分包含第6~8章,讲解了Unlit内置的可视化Shader编辑器Shader G.aph,并讲解了车漆和流光灯两个Shader案例,用于巩固前面章节所学到的内容,并加深对于URPShader的理解。
  《Unity Universal RP内置Shader解析》主要适合各大培训机构、高等院校作为Unity Shader课程教材,或从事Unity程序开发的读者参考。

作者简介

唐福幸,资深3D美术师,从事3D行业已有六年,先后在多家公司担任3D美术主管、3D技术美术师,擅长一切从零开始:开创团队、制定流程、人员培训、效果把控。能够熟练使用30余款3D专业软件,乐于钻研技术,并与人沟通分享。

内页插图

精彩书评

  ★随着Unity对于URP的不断迭代,其功能越来越强大,并且由于URP对于移动设备有着天然的性能优化,很多针对移动设备开发的3D应用逐渐采用URP。但是时至今日,国内仍然没有一本系统讲解URPShader的书籍,致使想要转向URP开发的团队望而却步,而本书可以极大地帮助他们快速掌握URPShader,降低开发门槛。
  ——徐晨华,有车以后公司创始人兼CEO
  
  ★Unity自2018年推出了可编程渲染流水线,URP是Unity基于可编程渲染流水线环境定制的一套官方的渲染框架,与之前传统的渲染流水线相比差别还是很大的。然而都快三年了,国内仍然没有推出一本关于URPShader的书籍,这本书的出现恰巧填补了这一空白。
  ——陈强,有车以后公司创始人兼COO
  
  ★作者将开发公司App产品过程中的研究成果总结之后写成这本书,以帮助那些想要从传统渲染流水线过渡到URP开发的团队快速掌握URPShader。并且作者在书中涉及的所有知识点都已经在公司产品开发中得到了验证,因此可以绝对放心地接纳和吸收。
  ——许晓平,网易高级后端开发工程师
  
  ★国内讲解UnityURPShader的书籍,目前市面上仅此一本,因此是所有想要研究URPShader人员的好选择。并且作者完全按照Shader编码的顺序进行讲解,有助于读者理解URPShader的实现逻辑。
  ——陈晨,米哈游资深技术美术师

目录

目录





资源下载





第1章初识URP


1.1URP与HDRP


1.2创建URP项目


1.2.1创建新的URP项目


1.2.2升级旧项目为URP项目


1.3URP内置Shader


1.3.1Lit


1.3.2Simple Lit


1.3.3Baked Lit


1.3.4Unlit


1.4手写Shader的必要性


1.5Shader文件所在路径


1.6Packages中的其他文件


1.6.1Core RP Librariy


1.6.2Universal RP


1.7常用文件之间的包含关系


第2章Lit.shader


2.1Lit主文件


2.1.1Properties代码块


2.1.2SubShader代码块


2.1.3FallBack


2.1.4代码结构


2.2ForwardLit Pass


2.2.1Pass标签


2.2.2编译指令


2.2.3声明关键词


2.2.4包含指令


2.3包含文件的定义及使用


2.3.1包含文件的定义方式


2.3.2包含文件的使用方式








第3章LitInput.hlsl


3.1声明属性变量


3.2纹理采样


3.2.1采样函数的宏定义


3.2.2金属和高光采样函数


3.2.3AO采样函数


3.3SurfaceInput.hlsl


3.3.1SurfaceData结构体


3.3.2透明度函数


3.3.3Albedo纹理采样函数


3.3.4法线贴图采样函数


3.3.5自发光贴图采样函数


3.4表面数据初始化函数


3.5函数和宏定义总结


第4章LitForwardPass.hlsl


4.1GPU实例


4.2结构体


4.2.1顶点函数输入结构体


4.2.2顶点函数输出结构体


4.3Common.hlsl


4.3.1规范


4.3.2函数


4.4输入数据初始化函数


4.4.1Input.hlsl


4.4.2初始化函数第1部分


4.4.3SpaceTransforms.hlsl


4.4.4初始化函数第2部分


4.5顶点函数


4.5.1顶点函数第1部分


4.5.2顶点函数第2部分


4.5.3顶点函数第3部分


4.5.4顶点函数第4部分


4.6片段函数


4.7函数和宏定义总结


4.8Unlit Shader案例


4.8.1完整Shader代码


4.8.2代码解析


第5章其余四个Pass


5.1ShadowCaster Pass


5.1.1Pass代码块


5.1.2ShadowCasterPass.hlsl


5.2DepthOnly Pass


5.2.1Pass代码块


5.2.2DepthOnlyPass.hlsl


5.3Meta Pass


5.3.1Pass代码块


5.3.2MetaPass.hlsl


5.4Universal2D Pass


5.4.1Pass代码块


5.4.2Universal2D.hlsl


第6章Shader Graph


6.1Shader Graph介绍


6.2使用流程


6.3常用节点


6.3.1数据输入类节点


6.3.2数学计算类节点


6.3.3向量处理类节点


6.3.4视觉调整类节点


第7章车漆Shader案例


7.1设计逻辑


7.2使用Shader Graph梳理逻辑


7.2.1创建属性变量


7.2.2Albedo部分节点


7.2.3Occlusion部分节点


7.2.4Clear Coat部分节点


7.2.5Flake部分节点


7.2.6Specular和Smoothness部分节点


7.2.7完整节点连接


7.3测试Shader效果


7.4编写车漆Shader代码


7.4.1CarPaint.shader文件


7.4.2CarPaintInput.hlsl文件


7.4.3CarPaintForwardPass.hlsl文件


第8章流光灯特效Shader案例


8.1效果分析


8.2使用Shader Graph梳理逻辑


8.2.1开放属性变量


8.2.2Albedo和Normal部分节点


8.2.3Metallic和Smoothness部分节点


8.2.4灯光部分节点连接


8.2.5完整节点连接


8.3编写流光灯Shader代码


8.3.1FlowingLight.shader文件


8.3.2FlowingLightInput.hlsl文件


8.3.3FlowingLightForwardPass.hlsl文件


后记


参考文献




前言/序言

前言




写作背景

2020年5月,笔者所在公司启动了基于Unity引擎开发的3D汽车展示项目,使用户能够在手机上通过3D的方式查看市面上的所有汽车。考虑移动设备性能方面的问题,团队在技术路线上首选了Unity的Universal Render Pipeline(简称URP)。

随着功能开发的逐渐推进,笔者也逐渐发现这样一个问题: 虽然Unity的可编程渲染流水线已经推出两年多了,但是其官方文档仍然没有补充完整,而仅有的几个文档也是点到即止,对于新手来说并不能起到很好的指导作用。虽然互联网上有很多关于这方面的文章分享,但至今没有发现系统讲解URP的,市面上更是没有一本关于这方面的书籍。

于是,笔者一边在网上查阅资料,一边翻看Shader的源码,然后在项目应用中不断测试并验证自己的假设,这一路走来,实属不易。想到肯定还有跟我一样的人正在或将要重走一遍这样的路,为了给他们提供一些帮助,笔者特地将自己的经验和成果总结下来,编辑成册。

虽然本书中仍然存在很多未研究透的知识点,但是读完本书之后,在Unity 的URP项目中自己编写Shader已经完全不成问题。

适用群体

本书适合有Unity Shader基础的读者作为自学和研究URP的参考书,也适合目前使用传统渲染流水线做项目,打算往URP转换的读者用于技术预研的教程。

如果读者毫无Unity Shader编写经验,建议先阅读笔者的第一本书《Unity ShaderLab 新手宝典》,这本书可以帮助你快速从“对Unity Shader一无所知”的状态变成“完全掌握Unity Shader”。

需要提前掌握的技能

作为一本Unity Shader的专业书籍,建议读者在阅读本书之前掌握如下技能:

(1) Unity的基本操作,例如添加物体、创建Shader文件、创建材质资源等。

(2) ShaderLab基础语法,例如定义属性变量、设置渲染状态等。

(3) Cg或HLSL基础语法,例如定义函数、声明变量等。

(4) 3D数学或空间几何相关知识,例如理解向量、矩阵、点乘运算等。

本书应该如何阅读

本书是按照笔者研究源码的思路进行编写的,引导读者从一个内置的Shader(Lit shader)开始逐步了解URP项目中完整的Shader框架,所以强烈建议读者在阅读本书的时候能够坐在计算机前,启动Unity,按照书中的引导打开并阅读源码。

Unity为了实现模块化将Shader框架按照不同功能拆分成不同的文件,然后以包含文件的形式进行整合,因此在阅读源代码的过程中需要来回翻阅多个不同的文件,所以建议读者一次性阅读较多的篇幅,切勿在中间章节停下,否则前面讲解的内容很可能会遗忘。

某些Shader文件的代码量非常大,读者在阅读后面的代码时很容易就会忘记前面的代码,因此建议读者在阅读源代码的过程中养成添加注释的习惯。

特别鸣谢

在此非常感谢广大Unity爱好者能够积极分享自己对于Unity最新技术的理解,你们作为技术的“先行者”,为后面的“追赶者”提供了丰富的知识储备,如果没有你们的贡献,Unity技术的学习之路将会变得更加坎坷。

此外,我还要感谢我目前就职的公司——广州市有车以后信息科技有限公司,这是一家愉快、包容且充满激情的公司。感谢公司给我提供机会,使我能够从事自己喜欢的工作,并全身心投入技术研究当中。正是我所从事的工作,激发了这本书的写作灵感。

本书能够顺利出版,还要感谢清华大学出版社,在该出版社相关编辑的帮助下,本书才能得以顺利面世。

最后,本书是笔者在一边探索一边应用的状态下编写而成的,倘若有疏漏和不足之处,恳请读者批评指正。


2021年8月