展望高级知识
有很多可以自己探索的主题
- 全局光照(global illumination),包括辐射度(radiosity)和路径追踪(path tracing) 环境光这一领域值得深入研究。
- 基于物理的渲染(physically based rendering, PBR) 光照和着色模型不仅可以做到看起来效果很好,而且能模拟现实生活中的物理现象。
- 体素渲染(voxel rendering) 想想《我的世界》,或者医院里的核磁共振扫描。
- 细节层次(level of detail, LoD)算法 这包括离线和动态网格简化、置换物技术和公告板技术。细节层次算法支撑了有效地渲染拥有数十亿植物的森林模型、有数百万人的人群模型或极其详细的3D模型等。
- 加速结构(acceleration structures) 这包括二叉空间分区树、维树、四叉树和八叉树。这些结构有助于高效地渲染大型场景,比如整个城市。
- 地形渲染(terrain rendering) 可探索如何高效地渲染一个地形模型,这个地形模型可能和一个国家一样大,但却包含房屋这样的细节。
- 大气效应和粒子系统(atmospheric effects and particle systems) 该系统包括雾、雨和烟,还有一些不太直观的材质,比如草和头发。
- 基于图像的光照(image-based lighting, IBL) 类似于环境映射,但用于漫反射光照。
- 高动态范围(high dynamic range, HDR)、伽马校正(gamma correction) 色彩表征这一领域也值得深入研究。
- 光的焦散(caustics) 也就是“游泳池底部移动的白色图案”。
- 纹理和模型的程序生成(procedural generation of textures and models) 可增加更多的变化和可能无限大的场景。
- 硬件加速(hardware acceleration) 使用OpenGL、Vulkan、DirectX等在GPU上运行图形算法。
当然,还有许多其他的主题,以上只涉及3D渲染!计算机图形学是一个主题范围更为广泛的学科。以下是一些你可能想要调查和研究的领域。
- 字体渲染(font rendering) 这比你想象的要复杂得多。
- 图像压缩(image compression) 可探索如何用最小的空间存储图像。
- 图像处理(image processing)(如变换和滤波) 想想Instagram滤波器。
- 图像识别(image recognition) 图中对象是狗还是猫?
- 曲线渲染(curve rendering),包括贝塞尔曲线和样条曲线 找出你最喜欢的绘图程序的曲线上那些奇怪的箭头到底是什么!
- 计算摄影(computational photography) 探索你手机上的相机是如何在几乎没有光线的情况下拍出这么好的照片的?
- 图像分割(image segmentation) 在你可以在视频通话中将背景模糊处理之前,你需要确定哪些像素是背景,哪些不是。
当然还要提高自己的数学知识,特别是3D线性代数工具的使用,高级知识涉及几何学,信号处理等等等。