Merge pull request #117909 from QbieShay/qbe/fix-trimmed-transform
Fix incorrectly stored emission transform for GPUParticles2D
This commit is contained in:
@@ -318,7 +318,7 @@ void main() {
|
||||
inv_emission_transform[1] = vec4(params.inv_emission_transform[3], params.inv_emission_transform[4], params.inv_emission_transform[5], 0.0);
|
||||
inv_emission_transform[2] = vec4(params.inv_emission_transform[6], params.inv_emission_transform[7], params.inv_emission_transform[8], 0.0);
|
||||
inv_emission_transform[3] = vec4(params.inv_emission_transform[9], params.inv_emission_transform[10], params.inv_emission_transform[11], 1.0);
|
||||
inv_emission_transform = transpose(inv_emission_transform);
|
||||
|
||||
txform = inv_emission_transform * txform;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -1649,7 +1649,19 @@ void ParticlesStorage::update_particles() {
|
||||
// In local mode, particle positions are calculated locally (relative to the node position)
|
||||
// and they're also drawn locally.
|
||||
// It works as expected, so we just pass an identity transform.
|
||||
RendererRD::MaterialStorage::store_transform(Transform3D(), copy_push_constant.inv_emission_transform);
|
||||
//RendererRD::MaterialStorage::store_transform(Transform3D(), copy_push_constant.inv_emission_transform);
|
||||
copy_push_constant.inv_emission_transform[0] = 1.0;
|
||||
copy_push_constant.inv_emission_transform[1] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[2] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[3] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[4] = 1.0;
|
||||
copy_push_constant.inv_emission_transform[5] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[6] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[7] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[8] = 1.0;
|
||||
copy_push_constant.inv_emission_transform[9] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[10] = 0.0;
|
||||
copy_push_constant.inv_emission_transform[11] = 0.0;
|
||||
} else {
|
||||
// In global mode, particle positions are calculated globally (relative to the canvas origin)
|
||||
// but they're drawn locally.
|
||||
|
||||
Reference in New Issue
Block a user