protected override void OnApply(CommandEncoder commandEncoder) { if (_dirtyFlags.HasFlag(ParticleEffectDirtyFlags.TransformConstants)) { _transformConstants.World = _world; _transformConstants.ViewProjection = _view * _projection; var result = Matrix4x4.Invert(_view, out var viewInverse); _transformConstants.CameraPosition = viewInverse.Translation; _transformConstantBuffer.UpdateData(_transformConstants); commandEncoder.SetInlineConstantBuffer(0, _transformConstantBuffer); _dirtyFlags &= ~ParticleEffectDirtyFlags.TransformConstants; } if (_dirtyFlags.HasFlag(ParticleEffectDirtyFlags.Texture)) { commandEncoder.SetTexture(1, _texture); _dirtyFlags &= ~ParticleEffectDirtyFlags.Texture; } }
protected override void OnBegin() { _dirtyFlags = ParticleEffectDirtyFlags.All; }
public void SetTexture(Texture texture) { _texture = texture; _dirtyFlags |= ParticleEffectDirtyFlags.Texture; }
public void SetProjection(Matrix4x4 matrix) { _projection = matrix; _dirtyFlags |= ParticleEffectDirtyFlags.TransformConstants; }
public void SetView(Matrix4x4 matrix) { _view = matrix; _dirtyFlags |= ParticleEffectDirtyFlags.TransformConstants; }
public void SetWorld(Matrix4x4 matrix) { _world = matrix; _dirtyFlags |= ParticleEffectDirtyFlags.TransformConstants; }