提问者:小点点

如何制作无限制照明系统


我正在用DirectX11编写一个游戏引擎。 我想创建一个照明系统,但是,无光限制!

我将此结构发送到我的像素着色器:

struct LightingConstantBufferData {
    DirectionalLight directionalLights[???];
};

问题是‘定向灯’阵列的数量。 C++必需常量。 但不限制动态阵列所需的照明。 我不知道做这个。 和我的像素着色器代码的一部分:

cbuffer LightingConstantBufferData: register(b3) {
    DirectionalLight directionalLights[SH_TOTAL_LIGHTS]; // 'SH_TOTAL_LIGHTS' is defined from cpp code(shader macro)
};

共1个答案

匿名用户

我来自OpenGL,所以这里我可能是错的,但据我所知,你可以发送给计算机着色器一个数据缓冲区,其中缓冲区的最后一个元素可以是一个未知大小的数组,我不确定这是否是DirectX中的方式,但绝对值得一试,如果你能在计算机着色器中以某种方式进行计算。