mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 11:53:28 +02:00
FOUnd a working path for gl41
This commit is contained in:
parent
d1d4920c35
commit
c95c736b1f
2 changed files with 20 additions and 9 deletions
|
@ -37,16 +37,11 @@ vec3 unpackSnorm3x10_1x2(int packedValue) {
|
|||
#if defined(GPU_GL410)
|
||||
layout(binding=0) uniform samplerBuffer blendshapeOffsetsBuffer;
|
||||
|
||||
vec2 gpu_unpackHalf2x16(uint packedValue) {
|
||||
return unpackHalf2x16(packedValue);
|
||||
}
|
||||
|
||||
BlendshapeOffset getBlendshapeOffset(int i) {
|
||||
vec4 fetched = texelFetch(blendshapeOffsetsBuffer, i);
|
||||
uvec4 elem_packed = uvec4(floatBitsToUint(fetched.x), floatBitsToUint(fetched.y), floatBitsToUint(fetched.z), floatBitsToUint(fetched.w));
|
||||
|
||||
uvec4 elem_packed = floatBitsToUint(texelFetch(blendshapeOffsetsBuffer, i));
|
||||
|
||||
BlendshapeOffset unpacked;
|
||||
unpacked.position = vec3(gpu_unpackHalf2x16((elem_packed.x)), gpu_unpackHalf2x16(uint(elem_packed.y)).x);
|
||||
unpacked.position = unpackSnorm3x10_1x2(int(elem_packed.y)).xyz * uintBitsToFloat(elem_packed.x);
|
||||
<@if USE_NORMAL@>
|
||||
unpacked.normal = unpackSnorm3x10_1x2(int(elem_packed.z)).xyz;
|
||||
<@endif@>
|
||||
|
|
|
@ -1687,13 +1687,29 @@ void Blender::run() {
|
|||
auto unpacked = unpackedBlendshapeOffsets.data() + range.begin();
|
||||
auto packed = meshBlendshapeOffsets + range.begin();
|
||||
for (auto j = range.begin(); j < range.end(); j++) {
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
float len = glm::compMax(glm::abs(unpacked->positionOffsetAndSpare));
|
||||
if (len > 1.0f) {
|
||||
unpacked->positionOffsetAndSpare /= len;
|
||||
} else {
|
||||
len = 1.0f;
|
||||
}
|
||||
|
||||
(*packed).packedPosNorTan = glm::uvec4(
|
||||
glm::floatBitsToUint(len),
|
||||
glm::packSnorm3x10_1x2(glm::vec4(unpacked->positionOffsetAndSpare, 0.0f)),
|
||||
glm::packSnorm3x10_1x2(glm::vec4(unpacked->normalOffsetAndSpare, 0.0f)),
|
||||
glm::packSnorm3x10_1x2(glm::vec4(unpacked->tangentOffsetAndSpare, 0.0f))
|
||||
);
|
||||
#else
|
||||
(*packed).packedPosNorTan = glm::uvec4(
|
||||
glm::packHalf2x16(glm::vec2(unpacked->positionOffsetAndSpare)),
|
||||
glm::packHalf2x16(glm::vec2(unpacked->positionOffsetAndSpare.z, 0.0f)),
|
||||
glm::packSnorm3x10_1x2(glm::vec4(unpacked->normalOffsetAndSpare, 0.0f)),
|
||||
glm::packSnorm3x10_1x2(glm::vec4(unpacked->tangentOffsetAndSpare, 0.0f))
|
||||
);
|
||||
|
||||
#endif
|
||||
unpacked++;
|
||||
packed++;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue