Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
 protected override void OnBegin()
 {
     _dirtyFlags = ParticleEffectDirtyFlags.All;
 }
Beispiel #3
0
 public void SetTexture(Texture texture)
 {
     _texture     = texture;
     _dirtyFlags |= ParticleEffectDirtyFlags.Texture;
 }
Beispiel #4
0
 public void SetProjection(Matrix4x4 matrix)
 {
     _projection  = matrix;
     _dirtyFlags |= ParticleEffectDirtyFlags.TransformConstants;
 }
Beispiel #5
0
 public void SetView(Matrix4x4 matrix)
 {
     _view        = matrix;
     _dirtyFlags |= ParticleEffectDirtyFlags.TransformConstants;
 }
Beispiel #6
0
 public void SetWorld(Matrix4x4 matrix)
 {
     _world       = matrix;
     _dirtyFlags |= ParticleEffectDirtyFlags.TransformConstants;
 }