首页 > 其他分享 >渲染管线

渲染管线

时间:2024-10-23 14:21:45浏览次数:6  
标签:渲染 DrawCall 阶段 GPU 顶点 CPU 管线

应用阶段

这一阶段由CPU处理,主要任务是为接下来GPU的渲染操作提供所需要的几何信息,即输出渲染图元(rending primitives)以供后续阶段的使用。渲染图元就是由若干个顶点构成的几何形状,点,线,三角形,多边形面都可以是一个图元。

  • 数据的准备
    image

  • 设置渲染状态
    渲染状态包括着色器(Shader),纹理,材质,灯光等等。
    设置渲染状态实质上就是,告诉GPU该使用哪个Shader,纹理,材质等去渲染模型网格体,这个过程也就是SetPassCall。当使用不同的材质或者相同材质下不同的Pass时就需要设置切换多个渲染状态,就会增加SetPassCall 所以SetPassCall的次数也能反映性能的优劣。

  • 发送DrawCall
    当收到一个DrawCall时,GPU会按照命令,根据渲染状态和输入的顶点信息对指定的模(网格)进行计算渲染。
    CPU通过调用图形API接口( glDrawElements (OpenGl中的图元渲染函数) 或者 DrawIndexedPrimitive (DirectX中的顶点绘制方法) )命令GPU对指定物体进行一次渲染的操作即为DrawCall。此过程实质上就是在告诉GPU该使用哪个模型的数据(图形API函数的功能就是将CPU计算出的顶点数据渲染出来)。

DrawCall:CPU每次调用图形API接口命令GPU进行渲染的操作称为一次DrawCall。
SetPassCall:设置/切换一次渲染状态。
Batch:把数据加载到显存,设置渲染状态,CPU调用GPU渲染的过程称之为一个Batch。
注:一个Batch包含至少一个DrawCall

几何阶段

几何阶段由GPU进行处理,其几乎要处理所有和几何相关的绘制事情。如绘制的对象,位置,形状。几何阶段处理的对象时渲染图元,进行逐顶点和逐多边形的操作。主要任务是把顶点坐标变换到屏幕空间中,以供给接下来的光栅器进行处理。具体输出的信息有,变换后的屏幕二位顶点坐标,顶点的深度值,着色,法线等等信息。

  • 顶点着色器(shader中的vertex代码段)
    流水线的第一个阶段,其可以通过编程进行控制。输入来自CPU发送的顶点信息,每个顶点都会调用一次顶点着色器image

  • 裁剪

光栅化阶段

此阶段仍然由GPU进行处理。这一阶段将会使用上个阶段传递的数据(屏幕坐标系下的顶点位置以及和它们相关的额外信息,如深度值(z坐标)、法线方向、视角方向等。)来产生屏幕上的像素,并渲染出最终的图像。光栅化的主要任务是决定渲染图元中的哪些像素应该被绘制在屏幕上,然后对其颜色进行合并混合。

  • 片元着色器(shader中的fragment代码段)
    image

纹理采样
模板测试
深度测试

标签:渲染,DrawCall,阶段,GPU,顶点,CPU,管线
From: https://www.cnblogs.com/comradexiao/p/18496294

相关文章

  • 卫浴3d渲染动画怎么做?
    在如今3D渲染技术已成为卫浴行业展示产品和设计的重要工具。通过3D渲染动画,设计师和制造商能够将他们的创意转化为逼真的视觉体验,让消费者在产品上市前就能预览最终效果。这种技术的应用不仅提升了产品的市场吸引力,还极大地提高了设计效率和客户满意度。那么,如何制作一部高质量的......
  • 3D渲染所需的关键组件和技能,及云渲染技术帮助!
    3D渲染的世界中,一个明确定义的过程对于实现令人惊叹的成果至关重要。本节探讨了影响渲染工作流程的关键组成部分,从高分辨率输出所需的时间投入到掌握行业标准软件所需的多样化技能集,为成功项目奠定了基础。一、3D渲染的所需关键工作1、时间投入和工作流程效率实现高质量的渲染......
  • Unity Shader深度图的应用,手把手教你写出可以正确计算并且渲染出二次元角色边缘光的着
    梦开始的地方相信大家看番的时候,都注意到了,很多时候,在角色周围有一圈光晕旧版《魔术快斗》剧照《新蔷薇少女》剧照 我们将这种光晕,称之为边缘光边缘光是描边的一种,动画师之所以加入边缘光,是为了凸现角色轮廓,使得角色区别于背景不少游戏也有着这种边缘光游戏《鸣潮》......
  • 当IT技术总监面试问:描述你如何实现服务端渲染(SSR)以及它对SEO和性能的影响?
    服务端渲染(SSR)是一种在服务器上渲染HTML页面,然后将完成的页面发送给客户端的网页渲染技术。这种方法与客户端渲染(CSR)相对,后者通常是在浏览器中执行JavaScript来动态生成页面内容。如何实现服务端渲染(SSR):1.**选择框架**:  选择支持SSR的框架,如React(Next.js)、Vue(Nuxt.js)、A......
  • 云渲染与3D视觉效果如何影响珠宝行业!
    3D渲染技术在珠宝行业的应用正迅速增长,2023年已带来数亿元收益,预计2024年将继续保持增长态势。珠宝品牌正越来越多地采用3D可视化技术来提升产品展示,以在激烈的市场竞争中占据优势。云渲染技术不仅提升了渲染效率,还降低了成本,同时保持输出质量。这种技术尤其在珠宝设计领域表现出......
  • 用C++编写一个简单的游戏引擎:从游戏循环到物理与渲染的全面解析
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界构建一个基础的2D游戏引擎是一项富有挑战性但极具学习价值的任务。本文将通过从零开始的方式,逐步讲解如何使用C++开发一个简单的游戏引擎。内容涵盖了游戏引擎的核心架构设计,包括游戏循环、物理引擎和图形渲染等......
  • Redshift渲染的四个小技巧,实现照片级效果!
    在进行3D项目工作时,有时需要提供逼真的渲染结果。有许多渲染器可以简单地实现这一点,但像Redshift这样的渲染器并非如此。你需要关注更多的设置,本文将介绍如何在Redshift中获得逼真的渲染效果,以及如何通过云渲染技术进一步提高渲染效率和质量。一、Redshift中获得逼真渲染效果的......
  • 浏览器渲染原理,回流,重绘
    浏览器渲染原理,回流,重绘在前端开发中,理解浏览器的渲染原理、回流(Reflow)和重绘(Repaint)是至关重要的。这不仅有助于我们编写高效的代码,还能显著提升页面的性能和用户体验。本文将深入探讨浏览器渲染的核心原理,并详细解析回流和重绘的概念、触发条件以及如何优化。......
  • 模板信息渲染和正则表达式的运用
    业务后台配置模板消息配置变量名及相关数据,用来进行查询配置模板信息,嵌入变量名前台渲染通过接口获取模板信息将模板消息中的变量替换成对应的数据模板信息:'今天到场一共${aaa}人,其中男${bbb}人,女${ccc}人'相关信息:{describe:'今天到场一共${aaa}人,其中男${bbb......
  • 微信小程序 触底加载更新 虚拟列表渲染
    <wxsmodule='filter'>varincludesList=function(list,currentIndex){if(list){returnlist.indexOf(currentIndex)>-1}}module.exports.includesList=includesList;</wxs><scroll-viewstyle='......