找回密码
 立即注册
查看: 469|回复: 2

Unity中,Shader,材质,和渲染管线有什么区别?

[复制链接]
发表于 2021-11-19 13:29 | 显示全部楼层 |阅读模式
简单来说,
shader就是一个函数。
材质就是函数加上参数。
渲染管线就是一整个程序。
发表于 2021-11-19 13:30 | 显示全部楼层
简单来说,
shader就是一个函数。
材质就是函数加上参数。
渲染管线就是一整个程序。
发表于 2021-11-19 13:34 | 显示全部楼层
0、material下包含多个pass,每个pass有一个shader.
1、render pipeline 代表的是如何组织不同类型的对象进行渲染,比如透明物体、不透明物体、UI等,还有调用渲染指令和设置渲染状态等。想了下,渲染数据其实没必要pipeline进行管理,GameObject上的renderer自己就可以搞定了。渲染的状态数据和shader中uniform类型的数据也应该是renderer下的material保存。而VBO EBO这些的在unity中是以mesh的形式保存的。
1.1、渲染数据包括但不限于 state、vbo、ebo、texture、matrix,各种vec2、3、4这样的数据。
1.2、渲染指令就是glDrawArray\glDrawElements\glDrawInstance这些的
2、在unity中,一个material值包含一个shaderlab shader,但是shaderlab代码就包含了render state的设置、attribute、uniform这些变量了。代码多pass的情况,编译出来的shader对象我认为应该也是多个。
以上是基于OpenGL的理解,如果是Vulkan的话,我猜测一个material下可能会有多个VkPipeline,利用Vulkan可以同时使用多个queue的特效,加速数据的提交和渲染指令提交。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 00:27 , Processed in 0.091402 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表