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

    文章

    5099

    浏览量

    134445
  • 编辑器
    +关注

    关注

    1

    文章

    826

    浏览量

    32646
  • Unity
    +关注

    关注

    1

    文章

    131

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

    爱普生可编程晶振产品如何选择

    在电子设备对时钟精度与灵活性要求日益提升的当下,爱普生可编程晶振以宽温工作,高精度温补、低功耗与小型化设计脱颖而出,成为5G通信、智能汽车、物联网设备的核心时钟方案。下面让我们介绍一下如何选择适合您的产品。
    的头像 发表于 05-15 15:47 576次阅读
    爱普生<b class='flag-5'>可编程</b>晶振产品如何选择

    可编程电子负载的原理及主要应用

    可编程电子负载是电源测试领域的关键设备,能够模拟真实负载条件并动态调整参数,为电源、电池、新能源设备等提供性能验证。源仪电子基于20年行业经验,开发了可编程直流电子负载系列,涵盖高精度测试、动态响应及多通道控制功能,满足从研发到量产的全
    的头像 发表于 03-15 10:38 1424次阅读
    <b class='flag-5'>可编程</b>电子负载的原理及主要应用

    爱普生SG-8101CE可编程晶振的应用领域介绍

    压电侠代理的SG-8101CE是爱普生推出的一款高性能可编程晶振,支持0.67-170MHz宽频段可编程调节,步进精度达±1ppm,并能在-40℃至+105℃宽温范围内保持±15ppm的高稳定性
    的头像 发表于 03-06 15:38 698次阅读
    爱普生SG-8101CE<b class='flag-5'>可编程</b>晶振的应用领域<b class='flag-5'>介绍</b>

    可编程交流负载标准

    可编程交流负载标准是电力电子测试领域的重要组成部分,它为交流电源、变频器、逆变器等设备的测试提供了标准化的负载条件。这种可编程性使得测试更加灵活和精确,能够满足不同设备和应用场景的需求。 核心在于其
    发表于 01-15 13:53

    EE-153:ADSP-2191可编程PLL

    电子发烧友网站提供《EE-153:ADSP-2191可编程PLL.pdf》资料免费下载
    发表于 01-14 14:57 0次下载
    EE-153:ADSP-2191<b class='flag-5'>可编程</b>PLL

    爱普生(EPSON) 常规可编程晶振

    常规可编程晶振主要用来替换一般用途的中低频四脚有源晶振,可以满足大多数用途有源晶振的快速交付。爱普生(Epson)作为全球领先的晶体产品供应商,提供了一系列可编程晶振,可以与基波正常振荡器相同
    的头像 发表于 01-13 15:24 1012次阅读
    爱普生(EPSON) 常规<b class='flag-5'>可编程</b>晶振

    可编程晶振的关键技术——锁相环原理讲解

    扬兴科技的可编程晶振利用锁相环技术,实现了核心参数的随意编程定制。这意味着客户可以根据具体需求,在1MHz~2100MHz的宽频率范围内(精确至小数点后六位)选择任意频点进行定制。
    的头像 发表于 12-30 14:33 1029次阅读
    <b class='flag-5'>可编程</b>晶振的关键技术——锁相环原理讲解

    PLC可编程控制器的简介

    PLC的英文全称为Programmable Logic Controller,也就是可编程序控制器。它是一种将计算机技术与继电器技术结合起来的现代化自动控制装置,1969年,美国数字化设备公司研制出
    的头像 发表于 12-23 09:09 2068次阅读