unity绘制管道_Unity Shader - 图形管道(The Graphics Pipeline)

本文详细介绍了Unity中图形管道的工作流程,从appdata结构体开始,经过顶点着色器和片段着色器,讨论了如何在顶点函数中传递顶点颜色,并最终在片段函数中使用。UnityObjectToClipPos函数用于将顶点坐标转换为适合光栅化的坐标。同时,文章还探讨了顶点颜色如何通过光栅化过程进行插值,以实现3D模型到2D屏幕的渲染。
摘要由CSDN通过智能技术生成

Unlit Shader 的数据流:

Object Data -> appdata Struct -> Vertex Shader -> v2f Struct -> Fragment Shader -> Final Color

Vertex Data Structure

第一个结构体是 appdata,它对应于输入组装阶段。为了刷新记忆,这个 appdata 来自于最后一个 shader:

struct appdata

{

float4 vertex : POSITION;

};

:POSITION是一个着色器语义,它是一个附加到着色器数据结构的字符串,传递关于成员预期用途的信息。通过将语义添加到appdata中,我们告诉输入程序集阶段我们想要的数据是什么。

在这种情况下,我们只要求顶点位置,这是您总是要求的最低点。 如果模型具有纹理,则可以请求更多数据,例如处理纹理的UV信息或顶点颜色。 语义和数据类型必须匹配。 如果你要给它一个POSITION语义的单个浮点数,那么float4的值会被无声地截断以浮动。

数据类型选择变量的“形状”,但语义选择它内部的内容。 多种语义可以填充float4,但是如果我们错误地选择了我们想要的语义,着色器会在运行时中断,可能会以微妙的方式破坏。 当着色器变得复杂时,微妙的着色器破坏是追踪最糟糕的问题之一,所以要小心。

这是收集每个顶点更改数据的唯一方法,但您可以从属性和全局属性中传递其他数据,这些数据不会在每个顶点变化。 OpenGL将这些每个顶点值调用得非常适当,并且可以变化,并且可以全局传递或者着色器中的属

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值