Skip to content

调色板与查找表

在真实项目中,我们经常希望“把一个标量映射为颜色”:高度 → 颜色,速度 → 颜色,噪声值 → 颜色,温度 → 颜色……本节我们用一个 1D 查找表(LUT)来完成这件事。

目标

  • 理解“标量 → 颜色”的映射思想
  • DataTexture 生成一张 1D 调色板纹理
  • 在片元着色器里用 texture2D 查询颜色

思路

  1. 在 JavaScript 中生成一张宽为 N、高为 1 的纹理,每个像素是一种颜色。
  2. 在片元着色器里,把标量 t(0~1)当作横坐标去采样调色板:
glsl
vec3 color = texture2D(uPalette, vec2(t, 0.5)).rgb;

动手练习

  • 改调色板生成逻辑(例如增加更多颜色段),观察整体风格变化
  • 把输入标量从 vUv.y 改成噪声或距离值,得到不同的“上色方式”

小结

你已经掌握了 LUT 的基本用法。下一节我们将把光照结果做“分段量化”,实现卡通渲染(Toon Shading)。