博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3D渲染管线的概述
阅读量:4361 次
发布时间:2019-06-07

本文共 1200 字,大约阅读时间需要 4 分钟。

渲染管线简介:是用来创建一个几何描述3D世界的2D图像,和一个确定这个3D世界中哪一部分将被透视投影到屏幕上的虚拟摄像机。

作用:将3D场景用几何学表现出来以及用它来产生2D图像。

简化的渲染管线流程:

2010041410154179.jpg

参考《3D游戏编程基础(DirectX9.0)》

 

详细图像管线流程:

2010041611385434.gif

 

伪代码描述:

 

// 首先,设置观察场景的方式setupTheCamera();// 清楚z-缓冲clearZBuffer();// 设置环境光源和雾化setGlobalLightingAndFog();// 得到可见物体列表potentiallyVisibleObjectList = highLevelVisibilityDetermination(scene);// 渲染它们for (all objects in potentiallyVisibleObjectList) {    // 使用包围体方法执行低级别VSD检测    if (!object.isBoundingVolumeVisible()) continue;    // 提取或者渐进式生成几何体    triMesh = object.getGeometry();    // 裁剪和渲染面    for (each triangle in the geometry) {	// 变换顶点到裁剪空间,执行顶点级别光照	clipSpaceTriangle = transformAndLighting(triangle);	// 三角形为背向的?	if (clipSpaceTriangle.isBackFacing()) continue;	// 对视锥裁剪三角形	clippedTriangle = clipToViewVolume(clipSpaceTriangle);	if (clippedTriangle.isEmpty()) continue;	// 三角形投影至屏幕空间,并且光栅化	clippedTriangle.projectToScreenSpace();	for (each pixel in the triangle) {	    // 插值颜色,z-缓冲值和纹理映射坐标	    // 执行zbuffering和alpha检测	    if (!zbufferTest()) continue;	    if (!alphaTest()) continue;	    // 像素着色	    color = shadePixel();	    // 写内容到帧缓冲和z-缓冲	    writePixel(color, interpolatedZ);	}    }}
参考《3D数学基础》

转载于:https://www.cnblogs.com/keokeo/archive/2010/04/14/1711600.html

你可能感兴趣的文章
hdu--1540 Tunnel Warfare(线段树+区间合并)
查看>>
通过命令给Linux(CentOS)分区
查看>>
Sprint1规划暨first stand up meeting
查看>>
python接口自动化3-自动发帖(session)
查看>>
复杂问题的简单抽象:魔兽世界中的兔子们
查看>>
那些美到极致的语言!
查看>>
Xamarin的不归路-ios模拟器没有键盘
查看>>
【云笔记】群晖DS218+ NoteStation 折腾
查看>>
jdk安装配置
查看>>
四、RocketMq简单的消费者和生产者(示例代码)
查看>>
json介绍
查看>>
Maven编译unmappable character for encoding Cp1252问题
查看>>
xftp上传文件失败,执行程序发现磁盘满了:No space left on device
查看>>
duplicate symbols for architecture i386 问题?
查看>>
[BZOJ]1027 合金(JSOI2007)
查看>>
poj 1696 Space Ant (几何 : 叉积 应用 + dfs)
查看>>
MySQL:按前缀批量删除表格
查看>>
Route学习笔记之Area的Route注册
查看>>
构建之法--软件工程师自我测评表
查看>>
电子书搜索
查看>>