Пример #1
0
 public void SetSkinningBuffer(DynamicBuffer <Matrix4x3> skinningBuffer)
 {
     if (skinningBuffer == _skinningBuffer)
     {
         return;
     }
     _skinningBuffer = skinningBuffer;
     _dirtyFlags    |= MeshEffectDirtyFlags.SkinningConstants;
 }
Пример #2
0
 public void SetAlphaTest(bool alphaTest)
 {
     _perDrawConstants.AlphaTest = alphaTest;
     _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants;
 }
Пример #3
0
 public void SetNumTextureStages(uint numTextureStages)
 {
     _perDrawConstants.NumTextureStages = numTextureStages;
     _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants;
 }
Пример #4
0
 public void SetPrimitiveOffset(uint primitiveOffset)
 {
     _perDrawConstants.PrimitiveOffset = primitiveOffset;
     _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants;
 }
Пример #5
0
 public void SetMaterialIndices(StaticBuffer <uint> materialIndicesBuffer)
 {
     _materialIndicesBuffer = materialIndicesBuffer;
     _dirtyFlags           |= MeshEffectDirtyFlags.MaterialIndicesBuffer;
 }
Пример #6
0
 public void SetTextureIndices(StaticBuffer <MeshTextureIndex> textureIndicesBuffer)
 {
     _textureIndicesBuffer = textureIndicesBuffer;
     _dirtyFlags          |= MeshEffectDirtyFlags.TextureIndicesBuffer;
 }
Пример #7
0
 public void SetTextures(TextureSet textures)
 {
     _textures    = textures;
     _dirtyFlags |= MeshEffectDirtyFlags.Textures;
 }
Пример #8
0
        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;
            }
        }
Пример #9
0
 public void SetLights(ref Lights lights)
 {
     _lightingConstants.Lights = lights;
     _dirtyFlags |= MeshEffectDirtyFlags.LightingConstants;
 }
Пример #10
0
 public void SetProjection(Matrix4x4 matrix)
 {
     _projection  = matrix;
     _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants;
 }
Пример #11
0
 public void SetView(Matrix4x4 matrix)
 {
     _view        = matrix;
     _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants;
     _dirtyFlags |= MeshEffectDirtyFlags.LightingConstants;
 }
Пример #12
0
 public void SetWorld(Matrix4x4 matrix)
 {
     _world       = matrix;
     _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants;
 }
Пример #13
0
 public void SetNumBones(uint numBones)
 {
     _transformConstants.NumBones = numBones;
     _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants;
 }
Пример #14
0
 public void SetSkinningEnabled(bool enabled)
 {
     _transformConstants.SkinningEnabled = enabled;
     _dirtyFlags |= MeshEffectDirtyFlags.TransformConstants;
 }
Пример #15
0
 public void SetTexturing(bool texturing)
 {
     _perDrawConstants.Texturing = texturing;
     _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants;
 }
Пример #16
0
 public void SetMaterials(StaticBuffer <VertexMaterial> materialsBuffer)
 {
     _materialsBuffer = materialsBuffer;
     _dirtyFlags     |= MeshEffectDirtyFlags.MaterialsBuffer;
 }
Пример #17
0
 public void SetTimeInSeconds(float time)
 {
     _perDrawConstants.TimeInSeconds = time;
     _dirtyFlags |= MeshEffectDirtyFlags.PerDrawConstants;
 }
Пример #18
0
 protected override void OnBegin()
 {
     _dirtyFlags = MeshEffectDirtyFlags.All;
 }