发布于: 2023-4-8最后更新: 2023-4-8字数 00 分钟

type
status
date
slug
summary
tags
category
icon
password

获取标准着色器代码

下载地址:
notion image

Buildin Shaders目录结构

一般包含四个文件夹:
  • CGIncludes:各种封装函数目录。如光照模型、坐标空间转换辅助函数
  • DefaultResources:丢几个基本的Shader目录,如错误处理的ErrorShader,GUI的FontShader,以及清屏的Clear。
  • DefaultResourcesExtra:各平台的Shaders总目录。
  • Editor:Standard Shader的自定义GUI cs文件目录。
建议采用Unity 5.3或以上版本,因为Unity将光照模型(BRDF)从Phong改为了GGX。Phong简单快速,各向同性,但是表达能力有限;GGX更为复杂,支持各向异性,并且有接近现实世界的高光效果,表达能力较强。这是一个很大的改进,使我们可以制作更多有趣的示例。

Standard Shader简介

一个简单的Surface着色器。位于DefaultResourcesExtra\Standard.shader
主要的Pass
  • Base forward pass:基本的前向渲染通道,主要处理直射光,自发光,光照图
  • Additive foward pass:附加的前向渲染通道,主要处理除非主光源的其他光源,一个光源一个Pass,不处理雾效
  • Shadow caster pass:物体影子的处理通道
  • Deffered pass:延迟渲染通道
  • Meta pass:烘焙光影信息提取通道,常规渲染期间不会执行

前向渲染模块 UnityStandardCoreForward.cginc

区分普通跟简单的顶点和片段着色器入口
注意:简单模块不支持PARALLAXMAP(视差贴图,主要增强不同视角的凹凸感,像素级别的处理比较耗性能)、DIRLIGHTMAPCOMBINED(开启后全局间接光会叠加烘焙光,手机端不需要那么精准的光照效果,优化一般自动剔除)、DIRLIGHTMAP_SEPARATE(代码里面没有这关键字影子)

顶点着色函数vertForwardBase

关于插值器(interpolators)参考

顶点着色函数输入结构体VertexInput

顶点着色函数输出结构体VertexOutputBase

片元着色函数fragForwardBaseInternal


水效果实现V1
水效果实现V1

第一版水,有需要再继续维护


Shader Properties [Toggle]开关定义
Shader Properties [Toggle]开关定义

用这种方式定义一个宏名,后面随便定义一个类型是float的变量,初始值只能是0或1