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