mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-30 09:36:43 +00:00
Switch to integer, uint not reliable in GLSL 120
This commit is contained in:
parent
ec27e60284
commit
24454a1698
1 changed files with 7 additions and 7 deletions
|
@ -15,17 +15,17 @@ float quickstep(float x)
|
||||||
|
|
||||||
#if @useUBO
|
#if @useUBO
|
||||||
|
|
||||||
const uint mask = uint(0xff);
|
const int mask = int(0xff);
|
||||||
const uvec4 shift = uvec4(uint(0), uint(8), uint(16), uint(24));
|
const ivec4 shift = ivec4(int(0), int(8), int(16), int(24));
|
||||||
|
|
||||||
vec3 unpackRGB(uint data)
|
vec3 unpackRGB(int data)
|
||||||
{
|
{
|
||||||
return vec3( (float(((data >> shift.x) & mask)) / 255.0)
|
return vec3( (float(((data >> shift.x) & mask)) / 255.0)
|
||||||
,(float(((data >> shift.y) & mask)) / 255.0)
|
,(float(((data >> shift.y) & mask)) / 255.0)
|
||||||
,(float(((data >> shift.z) & mask)) / 255.0));
|
,(float(((data >> shift.z) & mask)) / 255.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 unpackRGBA(uint data)
|
vec4 unpackRGBA(int data)
|
||||||
{
|
{
|
||||||
return vec4( (float(((data >> shift.x) & mask)) / 255.0)
|
return vec4( (float(((data >> shift.x) & mask)) / 255.0)
|
||||||
,(float(((data >> shift.y) & mask)) / 255.0)
|
,(float(((data >> shift.y) & mask)) / 255.0)
|
||||||
|
@ -35,7 +35,7 @@ vec4 unpackRGBA(uint data)
|
||||||
|
|
||||||
struct LightData
|
struct LightData
|
||||||
{
|
{
|
||||||
uvec4 packedColors; // diffuse, ambient, specular
|
ivec4 packedColors; // diffuse, ambient, specular
|
||||||
vec4 position;
|
vec4 position;
|
||||||
vec4 attenuation; // constant, linear, quadratic, radius
|
vec4 attenuation; // constant, linear, quadratic, radius
|
||||||
};
|
};
|
||||||
|
@ -73,7 +73,7 @@ void perLightSun(out vec3 ambientOut, out vec3 diffuseOut, vec3 viewPos, vec3 vi
|
||||||
vec3 lightDir = normalize(getLight[0].position.xyz);
|
vec3 lightDir = normalize(getLight[0].position.xyz);
|
||||||
|
|
||||||
#if @lightingModel == LIGHTING_MODEL_SINGLE_UBO
|
#if @lightingModel == LIGHTING_MODEL_SINGLE_UBO
|
||||||
uvec4 data = getLight[0].packedColors;
|
ivec4 data = getLight[0].packedColors;
|
||||||
ambientOut = unpackRGB(data.y);
|
ambientOut = unpackRGB(data.y);
|
||||||
vec3 sunDiffuse = unpackRGB(data.x);
|
vec3 sunDiffuse = unpackRGB(data.x);
|
||||||
#else
|
#else
|
||||||
|
@ -122,7 +122,7 @@ void perLightPoint(out vec3 ambientOut, out vec3 diffuseOut, int lightIndex, vec
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if @useUBO
|
#if @useUBO
|
||||||
uvec4 data = getLight[lightIndex].packedColors;
|
ivec4 data = getLight[lightIndex].packedColors;
|
||||||
ambientOut = unpackRGB(data.y) * illumination;
|
ambientOut = unpackRGB(data.y) * illumination;
|
||||||
#else
|
#else
|
||||||
ambientOut = getLight[lightIndex].ambient.xyz * illumination;
|
ambientOut = getLight[lightIndex].ambient.xyz * illumination;
|
||||||
|
|
Loading…
Reference in a new issue