渲染基础概念 unity shader 材质相关学习
Posted 长虹剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渲染基础概念 unity shader 材质相关学习相关的知识,希望对你有一定的参考价值。
文章目录
学了unity shader 明白一件事情,之前学习的 opengl 渲染管线,以及写过的 z-buffer 纯纯让自己陷入了渲染引擎的局部。 还不如看看 shader 语法,这样能够了解渲染的关键部分,以及通用对象,很多之前看不懂了,不知道为啥那么做的,现在一下子就懂了。 就是不学之前以为学的要很多,学了之后知道才知道框架基本是固定的,真正要学的是里面的创意,以及如何写才能高效。
渲染基础知识
FB0
帧缓存对象, 其实最长用的用途就是 后处理, 先渲染到这里,然后做后处理,最后作为整个贴图渲染到屏幕
HRDP 着色器基础介绍
[https://baijiahao.baidu.com/s?id=1713339702599327160](Metallic vs Specular 两套工作流程)
SSS Subsurface scattering
里面有 mask map
R: metallic
G: Ambient occulation
B: Detail Mask
A: smoothness
SSSS Screen-Space-Subsurface-Scattering
似乎需要一个 diffusion profile , 来表达扩散程度
bgfx
基础知识
uniform
统一数据类型
sc 转 unity 的使用
可以参考下这个博客 https://www.jianshu.com/p/4eb04f76f9a8
nm='fs_sky_color_banding_fix'
#nm=vs_sky
$shaderc -f ./$nm.sc -o ./hlsl/$nm.hlsl --depends -i ../../src --varyingdef varying.def.sc --platform windows -p vs_5_0 --type $nm:0:1 --preprocess
批处理
shaderc=bin/shaderc.exe
ddir=.
for file in $ddir/*.sc
do
nm=`basename $file .sc`
echo $nm
if [[ ! "$nm" =~ ^[vf]s ]]; then
continue
fi
$shaderc -f $ddir/$nm.sc -o hlsl/$nm.hlsl --depends -i $ddir --varyingdef $ddir/varying.def.sc --platform windows -p vs_5_0 --type $nm:0:1 --preprocess
vim hlsl/$nm.hlsl -s clearcode.vim
done
Unity Shader 入门精要
https://www.bilibili.com/video/BV1sh41147zb
debug 方法: window-> analysis->frame debugger 用于查看渲染过程进行debug
基本的变量和基本 shader 的编写
a2v: application to vertice
标准光照模型
拆成四部分,分别用模型计算然后组合, ambient, emissive, diffuse, specular
_ST 纹理的缩放和平移属性
float4 TANGENT: 顶点的切线方向 , 4 是因为决定副切线的方向。
代码要考虑复用结构,这样可以减少计算之类的。
凹凸贴图那里,要知道得再物体坐标系下定义法向量,也叫切空间下的normal
https://juejin.cn/post/7056031676727558157
分割模型其实也是为了渲染顺序中好排序,或者凸面体。
alpha 测试
透明度混合需要关闭深度写入,
透明度混合, 两个 pass ,第一个先获得深度信息。
光照部分:
处理光照可以按照逐像素,逐顶点以及SH 处理。 渲染的时候按照重要程度排序,然后选择。
比如 unity 会这样设置 【我猜测这就是实时渲染引擎的重要之处】
延迟渲染:古老的,多一个缓冲,但是不支持真正的抗锯齿
game object 中有个 render cube
以上是关于渲染基础概念 unity shader 材质相关学习的主要内容,如果未能解决你的问题,请参考以下文章