Unity中stats中的SetPass Call详解

SetPassCall涉及渲染状态配置和GPU数据设置,如VBO(顶点缓冲对象)、IBO(索引缓冲对象)和VAO(顶点数组对象)的管理。在OpenGL中,绘制通常需要VBO和IBO,结合Shader的顶点着色器和片元着色器进行DrawCall。Unity的ShaderLab中的Pass块允许指定DrawCall前的渲染状态,如ZTest、Cull和Blend等。
摘要由CSDN通过智能技术生成

简单的理解 SetPassCall :调用DrawCall之前,在绘制此 Pass 前,需要设置的所有渲染状态配置、或是BUFFER设置,都算是 SetPassCall 的内容。或是叫:SetGPUDataBeforeDraw 会更适合理解(在绘制前设置GPU数据,这些数据包括渲染系统,如:DX 或是 OpenGL 的状态值,或是 Buffer 数据)

VBO即Vertex Buffer Object(顶点缓冲对象),顶点数据块,在显存中,可被GPU直接访问。

IBO即Index Buffer Object(索引缓冲对象),又称EBO(Element Buffer Object,元素缓冲对象)。索引数据块,在显存中,可被GPU直接访问。

VAO即Vertex Array Object(顶点数组对象),在显存中,用来记录顶点属性(Vertex Attribute)和IBO的上下文信息。创建并绑定VAO后,后续的顶点属性调用都会储存在这个VAO中。

一般 OpenGL 中,绘制一个对象,就是提供,VBO,IBO(IBO还不一定需要提供,可以使用 DrawArray 直接通过VBO来绘制,如果通过DrawArrayIndex 之类的就需要 IBO 了,前面的 VBO,IBO 也可以通过 VAO 统一绑定后设置),然后指定 shader(VS(顶点着色器),FS(片元着色器),其他的按需提供),就可以调用 DC(DrawCall) API 来绘制就可以了

而 Unity 的 ShaderLab 中可以看到有 Pass 块的代码

其实每个 Pass 块的代码都是一个可以用于完整的 SetDrawState, DrawCall 的过程

因为 ShaderLab 中指定了一部分 DrawCall 前的绘制状态的设置配置,如:ZTest,ZWrite,Cull,Blend,ColorMask,Stencil 等,而 Pass 中的 #param vert XXX, #param frag XXX 就是我们的 VS,FS

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值