Correct LightLut_FromFunc/LightLutDA_Create input range
This commit is contained in:
parent
99be4ec656
commit
33c6a10be5
@ -35,11 +35,15 @@ void LightLut_FromFunc(C3D_LightLut* lut, C3D_LightLutFunc func, float param, bo
|
|||||||
int i;
|
int i;
|
||||||
float data[512];
|
float data[512];
|
||||||
memset(data, 0, sizeof(data));
|
memset(data, 0, sizeof(data));
|
||||||
int start = negative ? (-127) : 0;
|
int start = negative ? (-128) : 0;
|
||||||
for (i = start; i < 128; i ++)
|
for (i = start; i <= 128; i ++)
|
||||||
{
|
{
|
||||||
data[i & 0xFF] = func((float)i / 127.0f, param);
|
float x = i/128.0f;
|
||||||
if (i != start) data[(i & 0xFF) + 255] = data[i & 0xFF] - data[(i-1) & 0xFF];
|
float val = func(x, param);
|
||||||
|
if (i < 128)
|
||||||
|
data[i & 0xFF] = val;
|
||||||
|
if (i > start)
|
||||||
|
data[(i & 0xFF) + 255] = val - data[(i-1) & 0xFF];
|
||||||
}
|
}
|
||||||
LightLut_FromArray(lut, data);
|
LightLut_FromArray(lut, data);
|
||||||
}
|
}
|
||||||
@ -48,17 +52,19 @@ void LightLutDA_Create(C3D_LightLutDA* lut, C3D_LightLutFuncDA func, float from,
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
float data[512];
|
float data[512];
|
||||||
data[511] = 0;
|
|
||||||
|
|
||||||
lut->scale = 1.0f / (to-from);
|
float range = to-from;
|
||||||
|
lut->scale = 1.0f / range;
|
||||||
lut->bias = -from*lut->scale;
|
lut->bias = -from*lut->scale;
|
||||||
|
|
||||||
for (i = 0; i < 256; i ++)
|
for (i = 0; i <= 256; i ++)
|
||||||
{
|
{
|
||||||
float dist = ((float)i/255 - lut->bias) / lut->scale;
|
float x = from + range*i/256.0f;
|
||||||
data[i] = func(dist, arg0, arg1);
|
float val = func(x, arg0, arg1);
|
||||||
|
if (i < 256)
|
||||||
|
data[i] = val;
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
data[i+255] = data[i]-data[i-1];
|
data[i+255] = val-data[i-1];
|
||||||
}
|
}
|
||||||
|
|
||||||
LightLut_FromArray(&lut->lut, data);
|
LightLut_FromArray(&lut->lut, data);
|
||||||
|
Loading…
Reference in New Issue
Block a user