Skip to content

Commit cd49290

Browse files
committed
Removed UB casting from structs of different memory alignment.
1 parent 97cdc2c commit cd49290

File tree

2 files changed

+5
-10
lines changed

2 files changed

+5
-10
lines changed

Source/Node/Particle.cpp

+4-8
Original file line numberDiff line numberDiff line change
@@ -556,14 +556,10 @@ void ParticleNode::render() {
556556
const auto& transform = SharedDirector.getViewProjection();
557557
for (size_t i = 0; i < _quads.size(); i++) {
558558
auto& quad = _quads[i];
559-
Vec4 v4 = *r_cast<Vec4*>(&quad.lb.x);
560-
Matrix::mulVec4(&quad.lb.x, transform, v4);
561-
v4 = *r_cast<Vec4*>(&quad.rb.x);
562-
Matrix::mulVec4(&quad.rb.x, transform, v4);
563-
v4 = *r_cast<Vec4*>(&quad.lt.x);
564-
Matrix::mulVec4(&quad.lt.x, transform, v4);
565-
v4 = *r_cast<Vec4*>(&quad.rt.x);
566-
Matrix::mulVec4(&quad.rt.x, transform, v4);
559+
Matrix::mulVec4(&quad.lb.x, transform, quad.lb.toVec4());
560+
Matrix::mulVec4(&quad.rb.x, transform, quad.rb.toVec4());
561+
Matrix::mulVec4(&quad.lt.x, transform, quad.lt.toVec4());
562+
Matrix::mulVec4(&quad.rt.x, transform, quad.rt.toVec4());
567563
}
568564

569565
BlendFunc blendFunc{_particleDef->blendFuncSource, _particleDef->blendFuncDestination};

Source/Node/Sprite.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,13 @@ struct SpriteVertex {
2222
float u;
2323
float v;
2424
uint32_t abgr;
25-
uint8_t padding[4];
25+
inline Vec4 toVec4() const { return {x, y, z, w}; }
2626
struct Init {
2727
Init() {
2828
ms_layout.begin()
2929
.add(bgfx::Attrib::Position, 4, bgfx::AttribType::Float)
3030
.add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float)
3131
.add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true)
32-
.skip(sizeof(padding))
3332
.end();
3433
}
3534
};

0 commit comments

Comments
 (0)