0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Unity可编程渲染管线SRP具体流程介绍

454398 来源:CSDN 作者:莫之 2020-10-05 01:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、RenderPipeline类

通过SRP可以实现对渲染管线的完全控制,它提供了需要的工具来创建符合项目需求的渲染管线和效果;通过在C#脚本中定义一系列的命令来控制每一帧的渲染过程,和传统内置管线不同,它开放了更多的接口,给了开发者更大的自由度,但是又不至于像OpenGL手写管线那么复杂,可以很好满足开发者既需要自定义管线又要简单快捷的开发需求,降低了渲染管线的开发门槛;

该类用于srp中的渲染方式,它通过定义一系列的命令和设置来告诉unity怎么渲染一帧;

二、相关类

所有可编程渲染管线相关的类定义在UnityEngine.Rendering中;

1. RenderPipelineAsset

所有的管线资源都要继承自该类,并重写其创建管线的CreatePipeline()方法,返回一个RenderPipeline实例,并且需要将该值赋予到GraphicSettings,然后才可以使用这个自定义的管线来进行渲染;

2. GraphicsSettings

它和编辑器中的Project Settings中的Graphics的设置是紧密相关的,用于以脚本的方式来进行自动设置来代替手动设置;所以,它提供的属性和方法都是和设置面板相对应的;例如,创建一条管线后,就可以通过GraphicsSettings.renderPipelineAsset来将其设置为当前的渲染管线;

3. RenderPipeline

核心类,可编程的渲染管线的具体流程在此定义,所有的可编程渲染管线继承自该类,在创建新的管线资源时,需要使用到该类的子类进行实例化;

4. ScriptableRenderContext

渲染上下文,在自定义渲染管线中定义一些状态和渲染命令,然后调用Submit函数提交到GPU;这个上下文的概念类似于OpenGL中上下文的概念,定义渲染管线要使用的许多状态以及绘制命令,相当于整个渲染的manager;

SetupCameraProperties(camera):相机的配置是第一步,设置相机的属性,获取一个相机实例后,就可以获取它的观察矩阵(transform)和裁剪矩阵(clip plane等)等属性值;

5. CommandBuffer

它的出现早于SRP,在没有SRP时,它用于对unity内置的渲染管线进行扩展;该缓冲区用于存储一系列渲染命令,然后提交到渲染上下文中;

使用步骤:创建缓冲区-设置-提交-释放缓冲区

CommandBuffer buf=new CommandBuffer(); //设置渲染命令.... context.ExecuteCommandBuffer(buf) //非立即执行 buf.Release()

6. SortSettings

设置场景中物体的排序方式,使用默认方式和使用自定义方式

默认方式,设置criteria,这是一个SortingCriteria枚举类型,包含了透明物体(从前到后)、半透明(从后到前);

自定义方式,设置cameraPosition、customAxi、worldToCameraMatrix三个变量联合使用;

三、第一步-完成一个最基础的渲染管线

创建命令缓冲区,如下,设置清空渲染目标的命令;

剔除操作,通过相机获取剔除参数,剔除场景中的不可见物体;

绘制命令,绘制前需要对场景中的物体进行排序,为不同的物体设置不同的排序方式,比如半透明物体要从后到前渲染;在DrawingSettings中,构造函数第一个参数为ShaderTagId类型,也就是要使用的pass的tag的Id值,以及排序的设置;FilteringSettings则设置渲染队列的范围,用于设置哪些物体将会被渲染,如下例子,将透明和半透明分开进行渲染;

注意:天空盒的渲染在不透明物体之后,在半透明物体之前;

var cmd = new CommandBuffer(); CameraClearFlags clearFlags = camera.clearFlags; cmd.ClearRenderTarget((CameraClearFlags.Color&clearFlags)!=0,(CameraClearFlags.Depth&clearFlags)!=0,camera.backgroundColor); context.ExecuteCommandBuffer(cmd); cmd.Release(); context.SetupCameraProperties(camera); //剔除 ScriptableCullingParameters cullingPrama; camera.TryGetCullingParameters(out cullingPrama); CullingResults cullRet = context.Cull(ref cullingPrama); //绘制 SortingSettings sortSettings = new SortingSettings(camera); sortSettings.criteria = SortingCriteria.CommonOpaque; DrawingSettings drawSettings = new DrawingSettings(new ShaderTagId("BasicPass"),sortSettings); FilteringSettings filterSettings = new FilteringSettings(RenderQueueRange.opaque); context.DrawRenderers(cullRet,ref drawSettings,ref filterSettings); context.DrawSkybox(camera); sortSettings.criteria = SortingCriteria.CommonTransparent; drawSettings.sortingSettings = sortSettings; filterSettings.renderQueueRange = RenderQueueRange.transparent; context.DrawRenderers(cullRet,ref drawSettings,ref filterSettings); context.Submit();

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5271

    浏览量

    136060
  • 编辑器
    +关注

    关注

    1

    文章

    829

    浏览量

    33063
  • Unity
    +关注

    关注

    1

    文章

    131

    浏览量

    23388
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PSoC 4200L:可编程系统芯片的卓越之选

    PSoC 4200L:可编程系统芯片的卓越之选 在电子设计领域,可编程系统芯片(PSoC)以其独特的优势受到广泛关注。今天,我们就来深入了解一下赛普拉斯(现英飞凌旗下)的 PSoC 4200L 芯片
    的头像 发表于 04-21 16:30 59次阅读

    探索UPSD3212A/C/CV:集成8032 MCU、USB与可编程逻辑的闪存可编程系统设备

    探索UPSD3212A/C/CV:集成8032 MCU、USB与可编程逻辑的闪存可编程系统设备 在当今的电子设计领域,寻找一款功能强大、性能卓越且能满足多样化需求的系统设备至关重要。今天,我们将
    的头像 发表于 04-17 15:55 181次阅读

    AD9833低功耗可编程波形发生器:特性、应用与工作原理

    AD9833低功耗可编程波形发生器:特性、应用与工作原理 在电子设计领域,波形发生器是一种非常重要的设备,它可以产生各种类型的波形,广泛应用于传感、驱动、测试等多个领域。今天要给大家介绍
    的头像 发表于 04-16 09:45 354次阅读

    探索CAT523:数字可编程电位器的卓越性能与应用

    探索CAT523:数字可编程电位器的卓越性能与应用 在电子设计领域,数字可编程电位器(DPP)是一种极为实用的器件,它为工程师们提供了灵活的电压控制解决方案。今天,我们将深入探讨Catalyst
    的头像 发表于 04-10 16:15 188次阅读

    深入解析DS1023:8位可编程定时元件的卓越性能与应用

    深入解析DS1023:8位可编程定时元件的卓越性能与应用 在电子工程师的日常设计中,可编程定时元件是实现精确时间控制和信号处理的关键组件。今天,我们将深入探讨DS1023这款8位可编程定时元件,详细
    的头像 发表于 03-23 13:40 234次阅读

    探索BUF08832:可编程电压参考的卓越之选

    探索BUF08832:可编程电压参考的卓越之选 在电子设计领域,拥有一款性能出色且功能丰富的可编程电压参考芯片至关重要。今天,我们就来深入了解一下德州仪器(TI)的BUF08832,看看它在实际
    的头像 发表于 03-01 13:40 643次阅读

    Zynq全可编程片上系统详解

    Zynq 是由赛灵思(Xilinx,现为 AMD 的一部分)推出的一系列全可编程片上系统。它的革命性创新在于,它不是传统的 FPGA,也不是传统的处理器,而是将高性能的 ARM Cortex-A 系列处理器与传统的 FPGA 可编程逻辑紧密地集成在单一芯片上。
    的头像 发表于 01-13 11:41 2238次阅读
    Zynq全<b class='flag-5'>可编程</b>片上系统详解

    YXC高精度的石英可编程压控温补振荡器:YSV531PT系列

    YXC同通过自主研发陆续推出:可编程普通振荡器YSO690PR系列;可编程差分振荡器YSO210PR、YSO212PU系列;可编程压控振荡器YSV310PR系列;可编程压控差分振荡器Y
    的头像 发表于 12-25 15:38 558次阅读
    YXC高精度的石英<b class='flag-5'>可编程</b>压控温补振荡器:YSV531PT系列

    思尔芯邀您共聚 FPT 2025,赋能可编程技术新未来

    技术先锋,再启新程!思尔芯将亮相12月2日至5日的2025年国际现场可编程技术大会(FPT),与全球顶尖专家学者及行业伙伴,共同探索可编程技术的前沿发展与应用创新。FPT是亚太地区最具影响力的现场
    的头像 发表于 11-25 09:57 829次阅读
    思尔芯邀您共聚 FPT 2025,赋能<b class='flag-5'>可编程</b>技术新未来

    源仪电子S7220交直流可编程电源产品介绍

    源仪电子S7220交直流可编程电源融合了PWM、PFC和DSP等先进技术,提供了纯净、稳定且灵活的电源输出,具备精确的量测能力和完善的保护措施。无论是用于研发验证还是生产线质量检验,都能有效提升测试的精确性和效率,可编程电源是工程师应对复杂电源测试挑战的理想选择。
    的头像 发表于 09-22 14:28 691次阅读
    源仪电子S7220交直流<b class='flag-5'>可编程</b>电源产品<b class='flag-5'>介绍</b>

    可编程负载:实验室与生产的高效测试助手

    电子负载产品凭借高性能、多功能和高可靠性,为用户提供了一站式的测试解决方案。本文将详细介绍源仪电子的可编程负载的特点、应用以及如何助力实验室和生产提升效率。
    的头像 发表于 09-05 10:45 720次阅读
    <b class='flag-5'>可编程</b>负载:实验室与生产的高效测试助手

    用于 DOCSIS 3.0 上行路径的可编程增益放大器 skyworksinc

    电子发烧友网为你提供()用于 DOCSIS 3.0 上行路径的可编程增益放大器相关产品参数、数据手册,更有用于 DOCSIS 3.0 上行路径的可编程增益放大器的引脚图、接线图、封装手册、中文资料
    发表于 09-01 18:33
    用于 DOCSIS 3.0 上行路径的<b class='flag-5'>可编程</b>增益放大器 skyworksinc

    吉事励可编程交流恒流源原理及特点介绍

    可编程交流恒流源是一种电子测试设备,其核心功能是在负载变化时保持输出交流电流的恒定,同时允许用户通过编程接口灵活设定电流值、波形和频率。以下是其核心要点:
    的头像 发表于 07-24 18:18 708次阅读
    吉事励<b class='flag-5'>可编程</b>交流恒流源原理及特点<b class='flag-5'>介绍</b>

    吉事励可编程交流恒流源特点介绍

    在现代电气测试领域,精确的电流控制已成为产品质量和安全的关键保障。吉事励电子推出的CCS2000系列可编程交流恒流源凭借其先进技术和可靠性能,正成为断路器、熔断器、变压器等关键电气元件测试的首选设备
    的头像 发表于 07-22 17:30 740次阅读
    吉事励<b class='flag-5'>可编程</b>交流恒流源特点<b class='flag-5'>介绍</b>

    可编程SLIC语音芯片哪家好?

    在当今数字化快速发展的时代,语音芯片的应用越来越广泛,而可编程SLIC(用户线路接口电路)语音芯片更是凭借其独特的优势,受到众多行业的青睐。那么,面对众多的选择,哪家的可编程SLIC语音芯片更胜一筹
    的头像 发表于 06-12 13:55 888次阅读
    <b class='flag-5'>可编程</b>SLIC语音芯片哪家好?