Mipmap 实现详解:从原理到代码(含数学推导)

在实时渲染中,纹理贴图是赋予模型表面细节的关键技术。然而,当一个带有高分辨率纹理的模型距离摄像机很远,或者以一个倾斜的角度观察时,屏幕上的一个像素可能会对应纹理上的多个纹素(Texel)。如果不进行处理,直接采样会导致严重的摩尔纹(Moiré pat...

Computer Graphics

Implementing FPS Camera Movement in a 3D Application

Implementing FPS Camera Movement in a 3D ApplicationFirst-Person Shooter (FPS) camera movement is a core mechanic in many 3D ...

Computer Graphics

优化软渲染器:线程池设计与性能提升

在开发软渲染器时,性能优化是核心目标。单线程渲染受限于 CPU 单核性能,特别是在高分辨率或复杂场景下,帧率(FPS)往往较低。通过引入线程池(ThreadPool)并对关键模块进行多线程优化,我们成功将软渲染器的平均 FPS 从约 30 提升至 1...

技术

使用 SDL 窗口化实时渲染:设计 Scene 和 SDLApp 组件

使用 SDL 窗口化实时渲染:设计 Scene 和 SDLApp 组件在开发实时渲染应用时,SDL(Simple DirectMedia Layer)是一个轻量且跨平台的库,广泛用于创建窗口、处理输入和显示渲染结果。本文分享了一个基于 SDL 的软件...

图形学

使用四元数和变换类管理对象姿态

在之前的开发中,我们通过直接传递一个 mat4 modelMatrix 到渲染函数来表示模型的位置、旋转和缩放。虽然可行,但这种方式不够直观,难以单独修改某个变换分量(如只改变旋转),并且在处理旋转时可能遇到欧拉角的固有问题。为了更优雅、健壮地管理对...

Computer Graphics

加速小型矩阵乘法:3x3与4x4优化

在计算机图形学、物理模拟、机器人技术以及众多科学计算领域,3x3 和 4x4 矩阵的乘法运算极为常见且对性能至关重要。虽然现代 CPU 速度飞快,但在需要执行数百万次这类运算的场景下(例如实时渲染的每一帧),即使是微小的优化也能带来显著的性能提升。本...

Programming

增强真实感:为软渲染器添加 AO、高光和光泽度贴图

在上一篇文章中,我们成功地为 C++ 软渲染器添加了法线贴图支持,让低模也能展现丰富的表面几何细节。然而,要进一步提升渲染的真实感,我们还需要引入更多控制光照和材质表现的细节。本文将介绍如何继续扩展我们的渲染管线,加入环境光遮蔽 (Ambient O...

Computer Graphics

在软渲染器中实现法线贴图 (Normal Mapping)

在实时计算机图形学中,模型的细节往往受到多边形数量的限制。为了在不显著增加模型复杂度的前提下,模拟出丰富的表面细节(如凹凸、划痕、纹理),法线贴图技术应运而生。本文将详细介绍如何在基于 C++ 的软件渲染器中实现切线空间法线贴图 (Tangent S...

Computer Graphics

Blinn-Phong 着色器实现

Blinn-Phong 着色器实现概述Blinn-Phong 着色模型是经典 Phong 模型的改进版本,通过引入半角向量(Halfway Vector)优化了高光计算。我们的实现包含完整的顶点和片段着色器处理流程。 核心实现1. 顶点着色器1234...

Computer Graphics

渲染管线简介

SoftRasterizer 渲染流程解析概述本文档详细分析 SoftRasterizer 的渲染管线实现,涵盖从模型加载到最终像素输出的完整流程。渲染管线主要分为初始化阶段和每帧渲染阶段。 核心渲染流程1. 初始化阶段123456789101112...

Computer Graphics
123