渲染管线
文章平均质量分 90
牛掰是怎么形成的
我爱游戏,我爱编程,我爱技术,我更爱用自己的热情和技术去实现自己的游戏产品。
展开
-
PBR渲染流程
PBR材质通常由一组参数定义,这些参数描述了材质的物理属性。Albedo(反照率):材质的基本颜色,不包含任何光照信息。Normal Map(法线贴图):用于细化表面细节,改变表面的法线方向。Metallic(金属度):描述材质是否为金属。金属材质的值为1,非金属材质的值为0。Roughness(粗糙度):描述材质表面的光滑程度。值越高,表面越粗糙,反射越模糊。Ambient Occlusion(环境光遮蔽):描述表面在环境光照下的遮蔽程度。原创 2024-06-04 12:33:05 · 1367 阅读 · 0 评论 -
图形引擎漫谈(二)
渲染批次(Rendering Batching)渲染批次(Rendering Batching)是一种优化技术,用于减少图形渲染过程中CPU和GPU之间的通信开销,从而提高渲染性能。通过将多个绘制调用合并成一个批次,可以显著减少API调用的次数和状态切换的开销。以下是渲染批次的主要好处:1. 减少绘制调用次数每次绘制调用(如OpenGL的glDrawElements或Direct3D的DrawIndexedPrimitive)都会引发CPU和GPU之间的通信。通过将多个绘制调用合并成一个批次,可以减少原创 2024-05-22 12:36:13 · 902 阅读 · 0 评论 -
图形引擎漫谈(一)
Camera类在图形学中,一个Camera类通常用于表示场景中的观察点,它定义了观察者的位置、观察方向、视角等属性。Camera类的主要作用是生成一个视图矩阵(View Matrix)和一个投影矩阵(Projection Matrix),这两个矩阵用于将3D场景转换为2D图像。以下是一个简化的Camera类的实现,它包含了创建视图矩阵和投影矩阵的基本方法:#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>原创 2024-05-22 10:31:23 · 416 阅读 · 0 评论 -
渲染管线相关问题漫谈(一)
在三维图形渲染中,三角形的顶点按照逆时针方向连接的定义通常是基于观察者的视角来确定的。这意味着,当观察者面向三角形的正面时,顶点应该按照逆时针方向排列。以下是如何定义三角形顶点以形成逆时针方向连接的步骤:确定观察方向:首先,你需要确定观察者(或摄像机)的位置和观察方向。在三维空间中,这通常是通过摄像机的位置和朝向来定义的。选择三个顶点:选择构成三角形的三个顶点。在三维空间中,每个顶点都有一个坐标,通常表示为(x, y, z)。原创 2024-04-28 22:15:23 · 757 阅读 · 0 评论 -
3d游戏物体是如何在2d屏幕上显示
实时全局光照是一个非常复杂的主题,它需要使用一些高级的技术,如光线追踪(Ray Tracing)、光子映射(Photon Mapping)、辐射度贴图(Radiosity)等。优化:为了在不牺牲太多视觉质量的情况下提高性能,开发者会进行各种优化,如减少绘制调用(Draw Calls)、使用级联阴影映射(Cascaded Shadow Maps)、实施遮挡剔除(Occlusion Culling)来避免渲染被遮挡的物体,以及使用LOD(Level of Detail)技术来降低远处物体的细节等。原创 2024-04-04 19:22:40 · 713 阅读 · 0 评论 -
图形学相关概念漫谈(一)
光源参数颜色(Color):定义光源发出光线的颜色,通常使用RGB值表示。强度(Intensity):描述光源的亮度,可以是简单的标量值,也可以是物理单位,如流明或瓦特。位置(Position):对于点光源或聚光灯,定义光源在世界空间中的位置。方向(Direction):对于方向光(如太阳)或聚光灯,定义光线的发射方向。衰减(Attenuation):描述光源强度随距离增加而减少的速率,通常包括常数项、线性项和二次项衰减系数。角度(Angle):对于聚光灯,定义光线发散的角度。原创 2024-03-08 22:43:56 · 1030 阅读 · 0 评论 -
渲染管线漫谈(六)
渲染状态可以影响着色器程序的执行方式和输出结果,而着色器程序则利用渲染状态中的参数和配置来进行顶点变换、光照计算、纹理采样等操作。例如,通过修改渲染状态中的颜色偏移、模糊等参数,或者在着色器程序中使用特殊的计算算法,可以实现模糊效果、扭曲效果、全局光照等。例如,渲染状态中的光照模式可以影响着色器程序中的光照计算方式,而纹理采样的配置则会影响着色器程序中的纹理采样操作。总而言之,渲染状态和着色器程序是图形渲染中两个重要的组成部分,它们共同决定了最终的渲染结果。渲染目标的选择取决于具体的应用需求。原创 2024-03-05 20:33:32 · 594 阅读 · 0 评论 -
渲染管线漫谈(五)
后处理的功能主要包括:视觉效果:后处理可以实现各种视觉效果,如模糊、锐化、色调映射、边缘检测、镜面反射、抗锯齿等。图像调整:后处理也可以用来调整整个图像的颜色、亮度、对比度等属性,以改善视觉效果或适应特定的显示设备。特效:后处理还可以用来实现一些特效,如深度模糊、运动模糊、泛光、色彩分离、像素化等。后处理的特性主要包括:全局操作:后处理是对整个图像进行的操作,它可以访问和修改所有的片元的颜色和深度信息。灵活性:后处理可以在渲染完成后进行,因此可以根据需要动态地添加、修改或删除后处理效果。原创 2024-03-05 19:58:54 · 585 阅读 · 0 评论 -
渲染管线漫谈(四)
每个片元都有一个深度值,这个深度值会与深度缓冲区(Depth Buffer)中的对应值进行比较,如果深度测试失败(例如,新的片元深度值大于深度缓冲区中的值,表示新的片元被其他片元遮挡),那么这个片元就会被丢弃,不会进行后续的处理。这个过程可能会涉及到一些复杂的混合操作,例如片元着色器(Fragment Shader)是渲染管线中的一个重要部分,它负责处理每个像素(或称为片元)的颜色和深度。HDR渲染可以产生比普通的8位颜色更广的颜色范围,而色调映射则是将HDR渲染的结果映射到显示器可以显示的颜色范围内。原创 2024-03-05 18:24:46 · 842 阅读 · 0 评论 -
渲染管线漫谈(三)
在这个过程中,顶点的x、y、z坐标会被它们的w坐标除以,以便将它们映射到[-1, 1]的范围内,这是后续图形管线阶段所期望的坐标范围。观察矩阵的作用是为了创建一个以相机为中心的坐标系统,使得观察矩阵的作用是为了创建一个以相机为中心的坐标系统,使得渲染的场景看起来就像是从相机的视角观察的。在视口变换之后,顶点的坐标就已经是屏幕空间坐标了。接下来,这些坐标会被送入光栅化阶段,光栅化器会根据这些坐标生成片元(fragments),这些片元随后会经过片元着色器的处理,最终形成最后的像素颜色值,显示在屏幕上。原创 2024-03-05 16:52:56 · 858 阅读 · 0 评论 -
渲染管线漫谈(二)
为了确保最广泛的兼容性,开发者在设计使用模板测试的应用程序时,应该考虑到这些潜在的硬件限制,并在可能的情况下提供后备方案或不同的渲染路径。在使用模板测试时,开发者需要权衡其带来的好处和潜在的成本。这段代码的意思是,对于每个像素,无论模板测试的结果如何(Comp always),都将模板缓冲区中的值设置为1(Ref 1),并且在渲染时替换模板缓冲区的值(Pass replace)。大多数现代GPU支持至少8位的模板缓冲区,但在一些较旧或低端的硬件上,模板缓冲区的位深可能小于8位,这限制了可用的模板值范围。原创 2024-03-05 14:34:48 · 644 阅读 · 0 评论 -
渲染管线漫谈(一)
通过将物体分配到不同的渲染队列,可以根据需求应用不同的渲染状态和效果,以实现所需的视觉效果。不同的渲染队列按照从前向后的顺序进行渲染,这样可以避免遮挡问题,确保物体的渲染顺序正确。然后,它们的渲染命令会被发送到图形硬件,最终写入帧缓存。通过合理使用渲染队列,开发人员可以实现正确的渲染顺序、逼真的渲染效果、良好的性能表现以及灵活的渲染定制。通过将物体分配到不同的渲染队列,可以确保它们按照正确的顺序进行渲染,以实现正确的遮挡和混合效果。通过调整渲染队列,可以控制物体的渲染顺序和渲染效果,以实现所需的渲染效果。原创 2024-03-05 12:53:21 · 579 阅读 · 0 评论