Esempio n. 1
0
        public void ConstantBufferGetSetFromGenericValues()
        {
            object[] values = { 7, 3.14, Vector2.UnitX, 3.14f, new Vector4(7.14f, 7.15f, 7.77f, 2.55f) };

            using ConstantBuffer <Vector4> buffer = (ConstantBuffer <Vector4>)Gpu.Default.AllocateConstantBufferFromReflectedValues(values);
            Vector4[] data = buffer.GetData();
            ref byte  r0   = ref Unsafe.As <Vector4, byte>(ref data[0]);
Esempio n. 2
0
        public void ReadOnlyBufferGetSetDataFromArray()
        {
            float[] array = Enumerable.Range(0, 4096).Select(i => (float)i).ToArray();

            using ConstantBuffer <float> buffer = Gpu.Default.AllocateConstantBuffer(array);
            float[] result = buffer.GetData();

            Assert.IsTrue(array.AsSpan().ContentEquals(result));
        }
Esempio n. 3
0
        public void ConstantBufferGetRangeData()
        {
            float[] array = Enumerable.Range(0, 4096).Select(i => (float)i).ToArray();

            using ConstantBuffer <float> sourceBuffer = Gpu.Default.AllocateConstantBuffer(array);

            float[] sourceResult = sourceBuffer.GetData(128, 100);

            Assert.IsTrue(array.AsSpan(128, 100).ContentEquals(sourceResult));
        }
Esempio n. 4
0
        private static void ConstantBufferSetGeneric <T>(RenderContext rc, T value) where T : struct, IEquatable <T>
        {
            int            sizeOfT = Unsafe.SizeOf <T>();
            ConstantBuffer cb      = rc.ResourceFactory.CreateConstantBuffer(sizeOfT);

            cb.SetData(ref value, sizeOfT);
            T returnedValue = default(T);

            cb.GetData(ref returnedValue, sizeOfT);

            Assert.Equal(value, returnedValue);
        }
        public void SetData_GetData()
        {
            VkRenderContext rc  = TestData.CreateVulkanContext();
            ConstantBuffer  cb  = rc.ResourceFactory.CreateConstantBuffer(ShaderConstantType.Matrix4x4);
            Matrix4x4       mat = Matrix4x4.Identity;

            cb.SetData(ref mat, Unsafe.SizeOf <Matrix4x4>());

            Matrix4x4 ret = new Matrix4x4();

            cb.GetData(ref ret, Unsafe.SizeOf <Matrix4x4>());
            Assert.Equal(mat, ret);
        }
Esempio n. 6
0
        public void ReadOnlyBufferGetSetDataFromReadOnlyBuffer()
        {
            float[] array = Enumerable.Range(0, 4096).Select(i => (float)i).ToArray();

            using ConstantBuffer <float> sourceBuffer      = Gpu.Default.AllocateConstantBuffer(array);
            using ConstantBuffer <float> destinationBuffer = Gpu.Default.AllocateConstantBuffer(sourceBuffer);

            float[] sourceResult      = sourceBuffer.GetData();
            float[] destinationResult = destinationBuffer.GetData();

            Assert.IsTrue(array.AsSpan().ContentEquals(sourceResult));
            Assert.IsTrue(array.AsSpan().ContentEquals(destinationResult));
        }