庄懂老师TA学习笔记 - 渲染流程

视频链接

庄懂的技术美术入门课(美术向)-直播录屏-第1课_哔哩哔哩_bilibili

首先我们用一张图来看一下基础的渲染流程

第一步:读取模型的结构

大家都知道,在建模软件中,我们是通过创建一个一个顶点,来完成模型的创建的,我们通过连接这一个一个的顶点,就可以得到一些三角面,我们看一下Blender导出的一个正方体的模型结构

我们可以看到,这个正方体有8行是v开头,也就是他的顶点vertex,后面的三个数字也就是他的坐标,下方的f一共有12个,他指的的三角面fragment,对于一个正方体,如果我们把每一个正方形面使用对角线切割为两个三角形,正好可以得到12个三角形,也就是这12个三角面,三角面后面的数据就是他所使用的的顶点的Index,我们所写的Shader也就是读取了这些顶点数据,通过特殊的算法对他们进行处理,得到一些好看的效果。

第二步:定义输入结构

struct a2v {
                float3 vertex : POSITION;
                float3 normal: NORMAL;
            };

这个输入结构,定义的是模型的顶点和法线,冒号后面的是这个变量的类型

第三步:通过顶点函数对获得的顶点和法线进行计算

我们在这个函数中,通过计算,获取到了我们需要的数据并且把它输入进输出结构中

 v2f vert(a2v v) {
                v2f f;
                f.svPos = UnityObjectToClipPos(v.vertex);
                f.normalizedWorldNormal = normalize(UnityObjectToWorldNormal(v.normal));
                return f;
            }

第四步:定义输出结构

对于输出结构,我们必须有一个SV_POSITION类型的变量,也就是裁剪空间的坐标,否则将无法显示我们的自定义效果

struct v2f {
                float4 svPos: SV_POSITION;     
                fixed3 normalizedWorldNormal : COLOR;
            };

第五步:通过片元函数对顶点函数返回的结果进行计算,并进行输出

我们拿到顶点函数处理后得到的数据,将它们转化为屏幕空间的坐标,并且对他们进行像素化的处理。对于三个顶点所形成的三角面,他可能会跨越多个像素点,而我们的计算机都是以像素为单位进行处理和现实的,所以我们需要一个叫光栅化的操作,将三维空间的模型顶点,转换为了二维空间的像素点,之后又通过这个函数,对每一个像素进行单独的处理,从而得到我们最终的效果,下图就是基础光照模型Lambert的代码实现。(PS:光栅化,就是将几何信息转换成一个个的栅格组成的图像的过程。在Unity中,每一个美术模型由顶点和顶点构成的三角面来确定。将3D模型绘制到屏幕上时,根据每个三角面的三个顶点,将这个三角面所覆盖的每一个像素(栅格)进行填充的过程,就叫做光栅化)

 fixed4 frag(v2f f) : SV_TARGET {
                float3 normalizedLightDir = normalize(_WorldSpaceLightPos0.xyz);

                fixed dotValue = max(0, dot(normalizedLightDir, f.normalizedWorldNormal));

                fixed3 diffuse = _LightColor0.rgb * _Diffuse * dotValue;

                return fixed4(diffuse, 1);
            }

第六步:将处理后的图线显示到屏幕中

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值