【Unity Shader 个人笔记】 渲染管线

Unity中的计算机图形学(四)---三大测试基础       在第四篇文章中,我们进行了高斯模糊原理讲解和实际操作,接下来我们会重点讲渲染管线中的三大测试,第一篇文章我讲述了写这些文章的初衷,我们还是首先把渲染管线全部流程总体的概括一遍,以Unity为例。然后在看秦大的书,进行有价值的点的解析。因为秦大的书讲的比较底层,也就说讲的比我现在写的还原理还底层。 回到刚才的话题,三大测试的顺序:Alpha、模板测试、深度测试。当然,这里涉及一些计算公式... 阅读详情

Unity ShaderLab中的三种shader

  • 固定函数着色器
  • 表面着色器
  • 顶点着色器/片段着色器

固定功能着色器
针对于早期不支持可编程渲染管线的gpu,在unity里面只能使用shaderlab语法进行编写。由于硬件更新速度快,这类型的gpu已经被淘汰了,而且unity自从5.2版本后也自动将这种类型的着色器自动转换成顶点和片元着色器,所以基本可以忽略
表面着色器
是unity在顶点和片元着色器上面的一层封装,用户不用在意具体实现细节,只需要给出渲染所需的参数。编写时也是在CGPROGRAM和ENDCG之间使用CG/HLSL/GLSL等语法编写并嵌入到shaderlab语法中的着色器,但不用放在pass渲染流程块中。
顶点和片元着色器
在pass渲染流程块中,在CGPROGRAM和ENDCG之间使用CG/HLSL/GLSL等语法编写并嵌入到shaderlab语法中的着色器,用户可以定制具体的渲染效果。

  1. 模型是由三角面片组成,而每个三角面片又是又三个顶点组成,并且每个顶点又包含顶点坐标,法线方向,纹理坐标,切线方向,顶点颜色等数据信息。在unity
    shader中这些数据是由使用该shader所在材质的mesh render提供。
  2. 顶点着色器是逐个顶点的调用,它的输入实际上是模型顶点数据。
  3. 片元着色器是逐个片元的调用,它的输入实际上是顶点着色器的输出进行插值后得到的结果。

渲染流水线

在这里插入图片描述

应用阶段(Application Stage)

作用: 应用程序阶段,使用高级编程语言(C、C++、JAVA 等)进行开发,主要和CPU、内存打交道,诸如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等经典算法都在此阶段执行。在该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线传送到图形硬件。

阶段目标: 准备渲染所需的几何信息,即渲染图元(rendering primitives)

Draw Call:

  • 本质: 图像编程接口
  • 原理: CPU通过调用DrawCall向命令缓冲区(Command Buffer)的队列中添加渲染命令,而GPU则从已有的队列中读取渲染命令去执行
  • 优化: 由于调用DrawCall即使得CPU准备大量渲染数据提交到缓冲队列,大量的DrawCall会使得CPU过载,因此尽量减少DrawCall的调用次数(如进行批处理,合并网格…)
几何阶段(Geometry Stage)
  • 接收数据: 应用阶段所准备好的渲染图元的信息,也就是顶点数据(模型自身坐标系、顶点颜色、纹理UV等)
    阶段目标: 决定所需绘制图元的信息(绘制方法,绘制坐标)
光栅化阶段(Rasterizer Stage)
  • 接收数据: 几何阶段准备好的顶点信息
  • 阶段目标: 对几何阶段传递过来的屏幕空间的顶点信息进行处理,最终生成屏幕像素,渲染出图像

Unity Shader渲染流程
  1. Start : 顶点(模型空间)
  2. 顶点着色器: 顶点转换 (模型空间—>裁剪空间)(自定义操作)
  3. 光栅化: 顶点裁剪(视锥体裁剪) 背面剔除(Cull) 图元装配
  4. 片段着色器: 片段着色 (自定义操作)
  5. 三大测试: 模板测试(Stencil Test)深度测试(Depth Test)透明测试(Alpha Test)混合模式(Blend Mode)
  6. 更新帧缓存中的颜色值 GBuffer ——> frontBuffer——> frameBuffer
  7. End: 显示
unity渲染管线及升级URP unity渲染管线及升级URP一,unity渲染管线简介二,通用渲染管线URP三,shader升级URP1,Builtin RP和URP中内置Shader 的对应2,总体结构3,include4,光照模式LightMode5,变体Variants6,预定义宏辅助宏阴影贴图纹理采样器声明光照、雾7,辅助函数变换函数通用辅助函数向前渲染函数屏幕空间顶点光照深度其他7,内置变量8,后处理参考资料 一,unity渲染管线简介 Unity引擎的渲染管线主要分为"渲染核心库"与"渲染策略"两个部分, “渲染核心库”是U 阅读详情

相关推荐

【unity基础】关于学习通用渲染管线(UniversalRenderPipeline)入门级的分享笔记

在阅读URP的代码之前,需要对SRP进行一遍熟悉。首先我们可以通过一下代码进行SRP的Asset文件的创建} }

qq_41094072的博客 1万+

Shader基础学习入门--渲染管线篇--第一课

渲染管线(流水线)本质:数据 处理为 屏幕图像。

weixin_58485290的博客 390

详解Unity3D Shader开发之渲染管线

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,优快云社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。 Shader编程对于图形学渲染来说非常重要,为了让读者理解Shader编程的原理,文章会结合着可编程流水线原理与Shader编程一起给读者介绍,游戏场景中的物体渲染都是基于可编程流

海洋个人博客 2万+

【Unity Shader入门】3、Unity默认的渲染管线

Unity的渲染流水线可分为: 应用阶段几何阶段光栅化阶段 一、应用阶段 应用阶段包括 1、顶点数据(Gpu固定实现) 1.1、数据加载到显存中   将渲染所需数据从硬盘加载到内存中,网格纹理等数据又被加载到显存中(一般加载到显存后内存中的数据就会被移除) 1.2、设置渲染状态   这些状态定义了场景中的网格是怎么被渲染的。例如,使用哪个顶点着色器, 片原着色器,光源属性,材质等。 1.3、调...

LST329的博客 3347

Unity URP 渲染管线实战:URP渲染管线Shader机制剖析

主要结构依然是Shader{ SubShader { pass{} pass{} }, SubShader {}, FallBack }与标准的Unity Shader开发不同的是 URP Shader内嵌HLSL的代码,标准的是Cg的代码,其它的差不多。分析完URP的Unlit Shader后,接下来分析PBR Shader, PBR Shader基于物理的光照,支持金属度与粗超度美术工作流,反射与光泽度工作流,这些参数和标准PBR Shader一样,来看下URP的PBR Shader。

weixin_49669470的博客 3413

Unity Shader学习1 预备知识:渲染管线

​一、GPU是什么 1. GPU与CPU GPU是显卡上的一块芯片,就像CPU是主板上的一块芯片。 2. CPU 可以理解为颜料一个点一个点地先后发射,连接在一起,给人呈现以笑脸的图像,一步步迭代计算,花费时间较长。 3.GPU 多管颜料一瞬间同时发射,直接绘制成一幅完整的画像,大量高并行计算,花费时间是在一瞬间。 比起用三五个强大的微处理器(或者说“管道”)来处理这些信息,用一大堆小的微处理器来并行计算,快得多。这就是图形处理器(GPU : Graphic Processor Unit)的来

weixin_63623077的博客 1637

【Unity】从零构建Unity知识体系:一份面向开发者的全景式学习地图

本文为Unity开发者提供了一份从零构建知识体系的全景式学习地图。文章深入剖析了Unity引擎的核心架构,包括渲染管线、物理系统、脚本生命周期与网络编程,并专项讲解了平台适配、编辑器扩展与Shader入门等关键技能,旨在帮助开发者建立系统化认知,告别碎片化学习,实现高效成长。

weixin_28049429的博客 165

Unity 使用Shader Graph实现物体的溶解效果

前言 啊咧咧,从大学毕业开始,有一段时间没有更新过博客了,很怀念当初边学习边写博客的时光。今天打开博客网站看着各位大神通过文字来分享自己的技术心得,也手痒了,决定也来一篇! 说完上面的话,感觉自己像是大佬一样。嘿嘿,然而本篇文章还是一个小白文,就是Shader Graph的入门知识,一个简单的物体溶解效果,意在帮助新手了解Shader Graph这个工具。效果如下图,如果你感兴趣,可以看看后面的实现方式,然后来试试吧! 注:本项目Unity版本为2021.1.12f1c1 正文 1,配置环境 为了使用Sh

xinzhilinger的博客 6390

【Unity Shaders】学习笔记——Shader和渲染管线

Shader和渲染管线

喵~ 2337

Unity Shader参考大全/shader手册(吐血推荐,想学Unity shader/技术美术一定要看一下)

目录 Shader参考大全预览 GPU 部件、性能参数 Pipline渲染管线 应用程序阶段、几何阶段、光栅化阶段 Properties属性相关 Properties Attribute Semantics语义 应用程序到顶点着色器的数据 appdata 顶点着色器到片断着色器的数据 v2f 片断着色器输出的数据 fragOutput TagsSubShader中的内容 Tags、Queue RenderType DisableBatching、ForceNoSha...

yhx956058885的博客 5607

URP_Toon:Unity Universal Render管道中的Toon着色器

URP香椿着色器 介绍 基于URP的通用卡通着色器,使用URP标准的PBR模型(最低限度的CookTorrance BRDF)进行改造,纯代码实现,没有使用ShaderGraph,兼容SPR Batch。 基于URP的通用Toon着色器,在URP中使用PBR照明(极简主义CookTorrance BRDF),使用不带ShaderGraph的代码,兼容SPR Batch。 Unity 2020.2.0 +,URP 10.2.2+ 物产 SurfaceOptions 工作流程模式:镜面或金属 SurfaceType:不透明或透明 渲染面:正反两面(用于向前通过) Alpha裁剪:ClipMa

【Unity笔记】从 ASE Shader 到 URP Shader Graph:高效迁移实践指南

本文将围绕 "ASE Shader 转 URP Shader Graph" 的整体方案进行展开,从工具推荐、迁移原理、常见难点、辅助脚本,到项目中多个 Shader 批量转换的实践流程,帮助你系统掌握迁移方法。

一个XR(AR|VR|MR)程序猿的博客(EQ-雪梨蛋花汤) 3294

可使用opengl显示的八叉树结构

根据用户需要深度创建一个八叉树数据结构,同时使用opengl框架将所创建的每个节点空间立方体进行显示,需要自行配置opengl环境,运行平台VS2010

unity Shader 入门精要 EX

1、shader概念 Shader,中文名为着色器。 Shader其实就是专门用来渲染图形的一种技术,通过shader,我们可以自定义显卡渲染画面的算法,使画面达到我们想要的效果。 2、shader分类 Shader分为两类 : 顶点Shader(3D图形都是由一个个三角面片组成的,顶点Shader就是计算每个三角面片上的顶点,并为最终像素渲染做准备)。 像素Shader,顾名思义,就是以像素为单位,计算光照、颜色的一系列算法。 几个不同的图形API都有各自的Shader语言 在DirectX中,顶点sha

xinghaikongmeng的博客 5136

unity 日夜循环插件

一款unity的日夜循环插件,根据时间经纬度自动变换天晴情况。

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

泛红尘的博客 2998

Unity内置渲染管线升级URP教程

URP全称为Universal Render Pipeline(通用渲染管线),可以提供更加灵活的渲染方案,通过添加Render Feature实现各种渲染效果。并且可以针对移动平台进行专门的优化,同时还提供了SRPBatcher提高渲染效率。Unity的一些工具,比如ShaderGraph,也是必须在URP管线下才可以使用,可以说许多方面均优于内置渲染管线。 所以如果还在使用内置渲染管线的,建议尽早升级到URP。通过本文,可以了解到如何从内置管线升级到URP。并且记录了一些升级时可能遇到的问题和解决方法

shaobing32的博客 1万+

基于三轴加速度计的塑料水管泄漏振动检测技术全解析

在流体力学与结构动力学领域,管道振动分析是评估系统健康状态的关键技术。其基本原理在于,当管道内流体状态发生异常(如泄漏)时,会引发管壁产生特定的机械振动信号。这项技术的核心价值在于实现了对管道系统的非侵入式、在线监测,能够提前预警潜在故障,避免资源浪费与次生灾害。在智慧城市与智能水务等应用场景中,它对于保障供水管网安全、提升运维效率具有重要意义。本文聚焦于如何利用高精度的三轴加速度计,精准捕捉塑料水管因泄漏产生的微弱振动,并通过信号处理与机器学习算法,构建一套从数据采集到泄漏识别与定位的完整工程解决方案。

weixin_32239523的博客 407

Unity 内置渲染管线各个Shader的用途和性能分析,以及如何修改Shader(build in shader 源码下载)

Legacy就是遗留的意思,老木乃伊了,非必要不用,Particles路径下的shader的优化版都在Mobile/Particles,适用于桌面设备或较旧的 Unity 项目,支持较为复杂的光照和粒子效果,但性能可能不适合移动设备。这些着色器通常计算简单,旨在提供快速的渲染性能,适应移动设备的性能和内存限制。简化的工作流程:Unity 已经为常见的自然环境材质(如树木、草地、水面等)提供了预制的着色器,开发者可以直接使用这些着色器,而不需要编写复杂的自定义着色器,快速开发自然环境。

主攻工具化、AI 辅助开发、团队效率提升与产品落地。 8176

详解FreeRTOS:FreeRTOSConfig.h系统配置文件(拓展篇—1)

FreeRTOS的系统配置文件为FreeRTOSConfig.h,在配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件,本篇博文就来讲解这个文件。

不脱发的程序猿 1548

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2423

【Unity】Unity Shader入门学习笔记_1 Shader和渲染管线的基础概念

本文用于个人学习总结,个人能力有限文章内容仅供参考,如果文章内容有错误本人感到非常抱歉,或您对文章内容有疑问可以联系我,本文将从渲染管线开始,总结我自己对unity shader的理解。为了方便入门,我略去了部分理解较为复杂的内容,以帮助自己和读者更简单了解unity shader基础,在理清楚大部分内容后,建议查阅其他更专业博主的内容。

m0_61797125的博客 1240

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

ARINC 653 在综合模块化航空电子设备(IMA)的发展进程中扮演着极为关键的角色。从行业应用的实际情况来看,空客 A380 和波音 787 等先进飞机的航电系统套件充分体现了行业对 IMA 的高度重视和积极投入。在 IMA 架构下,核心软件具备强大的能力,能够支持多个航空电子应用程序的同时运行。这些应用程序可以并行开发,并高效地部署在同一个计算平台上,极大地提高了开发效率和系统集成度。ARINC 653 的出现为航空电子行业创造了一个充满活力和竞争力的商业环境。

2957
上一篇: 【数据结构】顺序表与链表
下一篇: 【Unity Shader】效果公式总结
洛初_Rakuui
博客等级 码龄8年 11粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值