public void SetSkinningBuffer(DynamicBuffer <Matrix4x3> skinningBuffer) { if (skinningBuffer == _skinningBuffer) { return; } _skinningBuffer = skinningBuffer; _dirtyFlags |= MeshEffectDirtyFlags.SkinningConstants; }
public void SetAlphaTest(bool alphaTest) { _perDrawConstants.AlphaTest = alphaTest; _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants; }
public void SetNumTextureStages(uint numTextureStages) { _perDrawConstants.NumTextureStages = numTextureStages; _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants; }
public void SetPrimitiveOffset(uint primitiveOffset) { _perDrawConstants.PrimitiveOffset = primitiveOffset; _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants; }
public void SetMaterialIndices(StaticBuffer <uint> materialIndicesBuffer) { _materialIndicesBuffer = materialIndicesBuffer; _dirtyFlags |= MeshEffectDirtyFlags.MaterialIndicesBuffer; }
public void SetTextureIndices(StaticBuffer <MeshTextureIndex> textureIndicesBuffer) { _textureIndicesBuffer = textureIndicesBuffer; _dirtyFlags |= MeshEffectDirtyFlags.TextureIndicesBuffer; }
public void SetTextures(TextureSet textures) { _textures = textures; _dirtyFlags |= MeshEffectDirtyFlags.Textures; }
protected override void OnApply(CommandEncoder commandEncoder) { if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.SkinningConstants)) { if (_skinningBuffer != null) { commandEncoder.SetInlineStructuredBuffer(2, _skinningBuffer); } _dirtyFlags &= ~MeshEffectDirtyFlags.SkinningConstants; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.TransformConstants)) { _transformConstants.ViewProjection = _view * _projection; _transformConstantBuffer.UpdateData(ref _transformConstants); commandEncoder.SetInlineConstantBuffer(1, _transformConstantBuffer); _dirtyFlags &= ~MeshEffectDirtyFlags.TransformConstants; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.LightingConstants)) { Matrix4x4.Invert(_view, out var viewInverse); _lightingConstants.CameraPosition = viewInverse.Translation; _lightingConstantBuffer.UpdateData(ref _lightingConstants); commandEncoder.SetInlineConstantBuffer(3, _lightingConstantBuffer); _dirtyFlags &= ~MeshEffectDirtyFlags.LightingConstants; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.PerDrawConstants)) { _perDrawConstantBuffer.UpdateData(ref _perDrawConstants); commandEncoder.SetInlineConstantBuffer(0, _perDrawConstantBuffer); _dirtyFlags &= ~MeshEffectDirtyFlags.PerDrawConstants; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.MaterialsBuffer)) { commandEncoder.SetStaticBuffer(6, _materialsBuffer); _dirtyFlags &= ~MeshEffectDirtyFlags.MaterialsBuffer; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.Textures)) { commandEncoder.SetTextureSet(7, _textures); _dirtyFlags &= ~MeshEffectDirtyFlags.Textures; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.TextureIndicesBuffer)) { commandEncoder.SetStaticBuffer(5, _textureIndicesBuffer); _dirtyFlags &= ~MeshEffectDirtyFlags.TextureIndicesBuffer; } if (_dirtyFlags.HasFlag(MeshEffectDirtyFlags.MaterialIndicesBuffer)) { commandEncoder.SetStaticBuffer(4, _materialIndicesBuffer); _dirtyFlags &= ~MeshEffectDirtyFlags.MaterialIndicesBuffer; } }
public void SetLights(ref Lights lights) { _lightingConstants.Lights = lights; _dirtyFlags |= MeshEffectDirtyFlags.LightingConstants; }
public void SetProjection(Matrix4x4 matrix) { _projection = matrix; _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants; }
public void SetView(Matrix4x4 matrix) { _view = matrix; _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants; _dirtyFlags |= MeshEffectDirtyFlags.LightingConstants; }
public void SetWorld(Matrix4x4 matrix) { _world = matrix; _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants; }
public void SetNumBones(uint numBones) { _transformConstants.NumBones = numBones; _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants; }
public void SetSkinningEnabled(bool enabled) { _transformConstants.SkinningEnabled = enabled; _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants; }
public void SetTexturing(bool texturing) { _perDrawConstants.Texturing = texturing; _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants; }
public void SetMaterials(StaticBuffer <VertexMaterial> materialsBuffer) { _materialsBuffer = materialsBuffer; _dirtyFlags |= MeshEffectDirtyFlags.MaterialsBuffer; }
public void SetTimeInSeconds(float time) { _perDrawConstants.TimeInSeconds = time; _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants; }
protected override void OnBegin() { _dirtyFlags = MeshEffectDirtyFlags.All; }