public override unsafe void Update(Quat[] quaternions, ShaderVariableMapping variable)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float4);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float4);

            fixed(Quat *ptr = quaternions) Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, ptr, (uint)Marshal.SizeOf <Quat>(), (uint)quaternions.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
        }
        public override unsafe void Update(Color4[] colors, ShaderVariableMapping variable)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float4) / sizeof(float);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float4);

            fixed(Color4 *ptr = colors) Orbital_Video_D3D12_ConstantBuffer_UpdateColorArray(handle, ptr, (uint)Marshal.SizeOf <Color4>(), (uint)colors.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
        }
        public override unsafe void Update(Vec3[] vectors, ShaderVariableMapping variable)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float3);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float3);

            fixed(Vec3 *ptr = vectors) Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, ptr, (uint)Marshal.SizeOf <Vec3>(), (uint)vectors.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
        }
        public override unsafe void Update(Mat3x2[] matrices, ShaderVariableMapping variable)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float3x2);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float3x2);

            fixed(Mat3x2 *ptr = matrices) Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, ptr, (uint)Marshal.SizeOf <Mat3x2>(), (uint)matrices.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
        }
        public override unsafe void Update(float[] values, ShaderVariableMapping variable)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float);

            fixed(float *ptr = values) Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, ptr, sizeof(float), (uint)values.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
        }
Esempio n. 6
0
        public override unsafe void Update(Mat4[] matrices, int offset)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float4x4);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float4x4);

            fixed(Mat4 *ptr = matrices) Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, ptr, (uint)Marshal.SizeOf <Mat4>(), (uint)matrices.Length, (uint)offset, srcStride, dstStride, currentNodeIndex);
        }
Esempio n. 7
0
        public override unsafe void Update(Vec2[] vectors, int offset)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(ShaderVariableType.Float2);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(ShaderVariableType.Float2);

            fixed(Vec2 *ptr = vectors) Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, ptr, (uint)Marshal.SizeOf <Vec2>(), (uint)vectors.Length, (uint)offset, srcStride, dstStride, currentNodeIndex);
        }
        public unsafe override void Update <T>(T[] data, ShaderVariableMapping variable)
        {
            uint     srcStride = (uint)ShaderBase.VariableTypeToSrcStride(variable.type);
            uint     dstStride = (uint)ShaderBase.VariableTypeToDstStride(variable.type);
            GCHandle gcHandle  = GCHandle.Alloc(data, GCHandleType.Pinned);
            IntPtr   dataPtr   = gcHandle.AddrOfPinnedObject();

            Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, (void *)dataPtr, (uint)Marshal.SizeOf <T>(), (uint)data.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
            gcHandle.Free();
        }
        public unsafe override void Update <T>(T[] data, ShaderVariableMapping variable)
        {
            uint srcStride = (uint)ShaderBase.VariableTypeToSrcStride(variable.type);
            uint dstStride = (uint)ShaderBase.VariableTypeToDstStride(variable.type);

            fixed(T *dataPtr = data)
            {
                Orbital_Video_D3D12_ConstantBuffer_UpdateArray(handle, dataPtr, (uint)Marshal.SizeOf <T>(), (uint)data.Length, (uint)variable.offset, srcStride, dstStride, activeNodeIndex);
            }
        }