protected override void OnApply(CommandEncoder commandEncoder) { if (_dirtyFlags.HasFlag(TerrainEffectDirtyFlags.TransformConstants)) { _transformConstants.World = _world; _transformConstants.WorldViewProjection = _world * _view * _projection; _transformConstantBuffer.UpdateData(ref _transformConstants); commandEncoder.SetInlineConstantBuffer(0, _transformConstantBuffer); _dirtyFlags &= ~TerrainEffectDirtyFlags.TransformConstants; } if (_dirtyFlags.HasFlag(TerrainEffectDirtyFlags.LightingConstants)) { Matrix4x4.Invert(_view, out var viewInverse); _lightingConstants.CameraPosition = viewInverse.Translation; _lightingConstantBuffer.UpdateData(ref _lightingConstants); commandEncoder.SetInlineConstantBuffer(1, _lightingConstantBuffer); _dirtyFlags &= ~TerrainEffectDirtyFlags.LightingConstants; } if (_dirtyFlags.HasFlag(TerrainEffectDirtyFlags.TileDataTexture)) { commandEncoder.SetTexture(2, _tileDataTexture); _dirtyFlags &= ~TerrainEffectDirtyFlags.TileDataTexture; } if (_dirtyFlags.HasFlag(TerrainEffectDirtyFlags.CliffDetailsBuffer)) { commandEncoder.SetStaticBuffer(3, _cliffDetailsBuffer); _dirtyFlags &= ~TerrainEffectDirtyFlags.CliffDetailsBuffer; } if (_dirtyFlags.HasFlag(TerrainEffectDirtyFlags.TextureDetailsBuffer)) { commandEncoder.SetStaticBuffer(4, _textureDetailsBuffer); _dirtyFlags &= ~TerrainEffectDirtyFlags.TextureDetailsBuffer; } if (_dirtyFlags.HasFlag(TerrainEffectDirtyFlags.Textures)) { commandEncoder.SetTextureSet(5, _textures); _dirtyFlags &= ~TerrainEffectDirtyFlags.Textures; } }
protected override void OnApply(CommandEncoder commandEncoder) { if (_dirtyFlags.HasFlag(SpriteEffectDirtyFlags.TextureConstants)) { _textureConstantBuffer.UpdateData(_textureConstants); commandEncoder.SetInlineConstantBuffer(0, _textureConstantBuffer); _dirtyFlags &= ~SpriteEffectDirtyFlags.TextureConstants; } if (_dirtyFlags.HasFlag(SpriteEffectDirtyFlags.Texture)) { commandEncoder.SetTexture(1, _texture); _dirtyFlags &= ~SpriteEffectDirtyFlags.Texture; } }
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; } }