From c3d0db985690f9995d8ec424a2f3ce4312b9a173 Mon Sep 17 00:00:00 2001 From: Benau Date: Wed, 17 Jan 2018 01:05:47 +0800 Subject: [PATCH] Use normalized short for animated texture update It should allow to have the maximum possible smooth animation texture_trans_x,y is fmoded so it's guaranteed to be -1.0 to 1.0 --- src/graphics/sp/sp_dynamic_draw_call.cpp | 2 +- src/graphics/sp/sp_instanced_data.hpp | 6 +++++- src/graphics/sp/sp_mesh_buffer.cpp | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/graphics/sp/sp_dynamic_draw_call.cpp b/src/graphics/sp/sp_dynamic_draw_call.cpp index cfe9e841c..e8816717b 100644 --- a/src/graphics/sp/sp_dynamic_draw_call.cpp +++ b/src/graphics/sp/sp_dynamic_draw_call.cpp @@ -133,7 +133,7 @@ SPDynamicDrawCall::SPDynamicDrawCall(scene::E_PRIMITIVE_TYPE pt, glVertexAttribDivisorARB(10, 1); // Texture translation glEnableVertexAttribArray(11); - glVertexAttribPointer(11, 2, GL_HALF_FLOAT, GL_FALSE, 32, (void*)24); + glVertexAttribPointer(11, 2, GL_SHORT, GL_TRUE, 32, (void*)24); glVertexAttribDivisorARB(11, 1); // Misc data (skinning offset and hue change) glEnableVertexAttribArray(12); diff --git a/src/graphics/sp/sp_instanced_data.hpp b/src/graphics/sp/sp_instanced_data.hpp index 4946ddec8..9589769cc 100644 --- a/src/graphics/sp/sp_instanced_data.hpp +++ b/src/graphics/sp/sp_instanced_data.hpp @@ -71,7 +71,11 @@ public: short s[4] = { toFloat16(scale.X), toFloat16(scale.Y), toFloat16(scale.Z), toFloat16(rotation.W) }; memcpy(m_data + 16, s, 8); - short tm[2] = { toFloat16(texture_trans_x), toFloat16(texture_trans_y) }; + short tm[2] = + { + short(texture_trans_x * 32767.0f), + short(texture_trans_y * 32767.0f) + }; memcpy(m_data + 24, tm, 4); memcpy(m_data + 28, &skinning_offset, 2); short hue_packed = short(core::clamp(int(hue * 100.0f), 0, 100)); diff --git a/src/graphics/sp/sp_mesh_buffer.cpp b/src/graphics/sp/sp_mesh_buffer.cpp index 9283827bc..d24a9e1f7 100644 --- a/src/graphics/sp/sp_mesh_buffer.cpp +++ b/src/graphics/sp/sp_mesh_buffer.cpp @@ -353,7 +353,7 @@ void SPMeshBuffer::recreateVAO(unsigned i) glVertexAttribDivisorARB(10, 1); // Texture translation glEnableVertexAttribArray(11); - glVertexAttribPointer(11, 2, GL_HALF_FLOAT, GL_FALSE, 32, (void*)24); + glVertexAttribPointer(11, 2, GL_SHORT, GL_TRUE, 32, (void*)24); glVertexAttribDivisorARB(11, 1); // Misc data (skinning offset and hue change) glEnableVertexAttribArray(12);