unity绘制管道_一起来写Unity渲染管线吧!一 搭建最基本的管线

本文介绍了Unity可编程渲染管线的基础,通过一个简单的案例——蓝屏渲染,阐述了如何搭建渲染管线。文章详细讲解了Command Buffer、Render Texture和相机与渲染目标的关系,并提供了源代码示例,展示了如何创建和使用CustomRenderPipeline及CustomRenderPipelineAsset。
摘要由CSDN通过智能技术生成

从本章开始,我们要正式进入可编程渲染管线的学习和设计了。在这一节,我们会讲解以下内容:

Unity 可编程渲染管线的基础代码结构

Command Buffer

Render Texture和Render Target

相机和渲染目标的关系

本小节包含以下案例:Kata 1:蓝屏!

1.2.1 初始Unity可编程渲染管线

在之前的小节中,我们介绍了渲染管线的基本概念,以及可编程管线的优势所在。但是我们并没有告诉读者到底怎么对渲染管线进行编程。事实上,如果没有Unity这种封装好的API可供调用的话,编写渲染管线需要学习相当多的图形API知识,比如目前流行的Direct3D 11,以及未来的Direct3D 12和Vulkan。而Unity帮我们做好了大量的封装工作,因此我们只需要自己实现一个函数:Render(),就可以使用实现自己的渲染管线了,简单吧!

虽然如此,但是如果读者有精力去学习底层的图形API的话,对渲染管线的编程是有很大的帮助的。毕竟所有的图形绘制最终都会转化成对底层API的调用,如果读者能够从实现角度理解渲染管线的话,在性能达到瓶颈的时候也容易了解应该从哪里入手进行优化。

在Unity中,我们使用一个RenderPipeline来代表自己的渲染管线,并使用RenderPipeline.Render方法来代表绘制一帧的操作。一旦我们将自己的RenderPipeline对象注册到Unity中,Unity就会每一帧都调用我们自己的RenderPipeline来绘制整个画面。

接下来让我们用一个案例来搭建我们最初的渲染管线架构吧!

Kata 1:蓝屏!

蓝屏不仅是Windows用户的噩梦,也是我们渲染管线之旅的开始(笑)。蓝屏的管线只干了一件事:将屏幕清空成蓝色。但是为了让管线正常运转起来,我们必须要设置完所有的内容。这个有点像Hello World的程序可以在之后用于测试Unity是否支持我们的管线。

目标:搭建渲染管线,将屏幕清空为蓝色。

在Unity中新建两个脚本文件,命名为Kata01.cs和Kata01Asset.cs,输入以下内容:

Kata01.cs:

using UnityEngine;

using UnityEngine.Rendering;

using UnityEngine.Experimental.Rendering;

namespace Kata01

{

public class CustomRenderPipeline : RenderPipeline

{

CommandBuffer _cb;

//这个函数在管线被销毁的时候调用。 public override void Dispose()

{

base.Dispose();

if(_cb != null)

{

_cb.Dispose();

_cb = null;

}

}

//这个函数在需要绘制管线的时候调用。 public overr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值