对于那些非常了解计算机图形学中的 XNA 和色彩理论的人,我有一个简短的问题。我正在制作一个瓷砖游戏(有点像泰拉瑞亚),我想知道如何将每个瓷砖照明应用到场景中。对于这个游戏来说,彩色光照是必须的,而现在我通过 4 个 2D 字节数组、存储整体光照和 3 种不同的颜色量来解决这个问题。绘制瓷砖时,它会采用特定瓷砖的纹理,但我将如何根据 3 个颜色值和整体照明在同一个瓷砖上应用颜色?
现在,这是我的颜色生成函数:
public Color GetColorAt(int x, int y)
{
byte r = _rMap[x, y]; //Red light
byte g = _gMap[x, y]; //Green light
byte b = _bMap[x, y]; //Blue light
byte mul = _lightMap[x, y]; ///Overall light
return new Color(r * mul, g * mul, b * mul, 1);
}
作为色彩理论的新手,我根本不知道我是否以正确的方式处理这个问题。我的照明系统使用细胞算法,减少并扩散到所有相邻的瓷砖。如果它降低了每个图块的颜色值,我什至需要从整体光值开始吗?
此外,在混合瓷砖纹理和光线以获得结果时,我是否使用加法、乘法或其他一些计算?
TL;DR:1. 考虑到每个瓷砖之间的光线减弱,上面的代码块是否有效?2. 如何将光和纹理结合起来,以获得在光的颜色下看起来像它的纹理?
感谢您的帮助,我没有颜色组合的经验。