PICO-8调色板及颜色映射算法

2025-09-11

这段代码定义了PICO-8游戏机的16色调色板,并提供了多种颜色距离计算方法(欧几里得距离、加权RGB距离、HyAB距离及其变体),以及一个将图像像素映射到最接近的调色板颜色的函数。它利用NumPy高效地处理颜色数据,并允许用户自定义距离函数以实现不同的颜色匹配策略。 这对于像素艺术游戏开发和图像颜色量化非常实用。

阅读更多
游戏

HyAB距离公式改进CIELAB颜色量化

2025-07-10

本文探讨了一种改进的CIELAB颜色量化方法,使用名为HyAB的新距离公式替代传统的欧几里得距离。HyAB公式在亮度和色度维度上分别采用绝对差和欧几里得距离,实验表明其更符合人类感知。作者将其应用于k-means算法,并通过将L分量的均值计算改为中位数计算,进一步优化了结果。虽然HyAB在某些情况下能提升图像质量,但作者也指出,整体系统设计和例如抖动等后处理技术对最终结果的影响更大。

阅读更多

N64上的实时光照和法线贴图:一个令人惊叹的逆向工程

2025-05-17

本文介绍了作者在任天堂64上实现实时光照和法线贴图的惊人技术。通过巧妙地利用调色板纹理和CPU端着色,作者绕过了N64硬件的限制,实现了令人印象深刻的视觉效果。该技术涉及将漫反射和法线信息压缩到共享调色板中,并在运行时通过CPU更新调色板以模拟光照效果。虽然该方法存在一些局限性,例如不支持点光源和阴影,但其创新性令人瞩目,为N64平台上的图形渲染开辟了新的可能性。

阅读更多
开发

Quake 引擎的预计算可见性:揭秘 PVS 算法

2025-01-10

本文是“解开 PVS 神秘面纱”系列的第一篇,探讨了 Quake 游戏引擎如何通过预计算可见性集 (PVS) 来优化渲染性能。在 90 年代中期,软件渲染的局限性使得减少过度绘制成为关键。Quake 使用门户系统和 PVS 来解决这个问题。门户将世界划分为多个单元,游戏引擎只渲染摄像机可见的单元及其通过门户可见的其他单元。PVS 算法在游戏地图预编译阶段计算每个单元可见的其他单元列表,从而在运行时避免了复杂的可见性测试,显著提高了渲染效率。本文深入探讨了 PVS 算法的实现细节,包括门户的定义、BSP 树的作用以及算法的三步流程:基准可见性、完整可见性以及结果整合。

阅读更多
游戏 PVS 算法

像素艺术游戏缩放的简单方法

2024-12-09

本文探讨了如何缩放像素艺术游戏以获得最佳的复古外观。作者分析了CRT显示器和VGA连接的特性,指出水平方向的轻微模糊可以模拟这些旧式显示技术的效果。文章建议采用垂直方向最近邻整数缩放,然后水平方向线性缩放的方法,并通过对比不同缩放方法的效果图以及实际的VGA连接实验,证明了该方法的有效性。该方法尤其适用于将低分辨率游戏放大到较高分辨率的场景,例如将320x200分辨率的游戏画面放大到现代显示器上。

阅读更多
10
未分类 游戏缩放

经典3D电子游戏阴影技术

2024-10-30

本文回顾了经典3D游戏中使用的各种阴影技术,从简单的2D阴影图像、斑点阴影到更复杂的平面阴影、投影纹理阴影和阴影贴图。文章详细介绍了每种技术的实现方式、优缺点以及应用案例,例如《超级马里奥64》的斑点阴影、《毁灭战士3》的模板阴影和《半条命2》的阴影贴图等。还探讨了现代游戏中的阴影技术,包括级联阴影贴图、光照探针和光线追踪阴影,并指出即使是光线追踪也需要进行近似处理。

阅读更多
17
未分类 阴影技术