Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
 public void SetTextures(TextureSet textures)
 {
     _textures    = textures;
     _dirtyFlags |= TerrainEffectDirtyFlags.Textures;
 }
Esempio n. 3
0
 public void SetTextureDetails(StaticBuffer <TextureInfo> textureDetailsBuffer)
 {
     _textureDetailsBuffer = textureDetailsBuffer;
     _dirtyFlags          |= TerrainEffectDirtyFlags.TextureDetailsBuffer;
 }
Esempio n. 4
0
 public void SetCliffDetails(StaticBuffer <CliffInfo> cliffDetailsBuffer)
 {
     _cliffDetailsBuffer = cliffDetailsBuffer;
     _dirtyFlags        |= TerrainEffectDirtyFlags.CliffDetailsBuffer;
 }
Esempio n. 5
0
 public void SetTileData(Texture tileDataTexture)
 {
     _tileDataTexture = tileDataTexture;
     _dirtyFlags     |= TerrainEffectDirtyFlags.TileDataTexture;
 }
Esempio n. 6
0
 public void SetLights(ref Lights lights)
 {
     _lightingConstants.Lights = lights;
     _dirtyFlags |= TerrainEffectDirtyFlags.LightingConstants;
 }
Esempio n. 7
0
 public void SetProjection(Matrix4x4 matrix)
 {
     _projection  = matrix;
     _dirtyFlags |= TerrainEffectDirtyFlags.TransformConstants;
 }
Esempio n. 8
0
 public void SetView(Matrix4x4 matrix)
 {
     _view        = matrix;
     _dirtyFlags |= TerrainEffectDirtyFlags.TransformConstants;
     _dirtyFlags |= TerrainEffectDirtyFlags.LightingConstants;
 }
Esempio n. 9
0
 public void SetWorld(Matrix4x4 matrix)
 {
     _world       = matrix;
     _dirtyFlags |= TerrainEffectDirtyFlags.TransformConstants;
 }
Esempio n. 10
0
 protected override void OnBegin()
 {
     _dirtyFlags = TerrainEffectDirtyFlags.All;
 }