Example #1
0
        public static FoundryHandle Build <T>(ShaderContainer container, List <T> items, Func <T, FoundryHandle> indexFunc)
        {
            if ((items == null) || (items.Count <= 0))
            {
                return(FoundryHandle.Invalid());
            }
            var listHandle = container.AddHandleBlob((uint)items.Count);

            for (var i = 0; i < items.Count; ++i)
            {
                container.SetHandleBlobElement(listHandle, (uint)i, indexFunc(items[i]));
            }
            return(listHandle);
        }
Example #2
0
        public static FoundryHandle Build(ShaderContainer container, List <FoundryHandle> values)
        {
            if ((values == null) || (values.Count <= 0))
            {
                return(FoundryHandle.Invalid());
            }
            var listHandle = container.AddHandleBlob((uint)values.Count);

            for (var i = 0; i < values.Count; ++i)
            {
                container.SetHandleBlobElement(listHandle, (uint)i, values[i]);
            }
            return(listHandle);
        }
            public BlockVariable Build()
            {
                var blockVariableInternal = new BlockVariableInternal()
                {
                    m_TypeHandle = Type.handle,
                    m_NameHandle = container.AddString(Name),
                };

                blockVariableInternal.m_AttributeListHandle = container.AddHandleBlob((uint)Attributes.Count);
                for (int i = 0; i < Attributes.Count; ++i)
                {
                    container.SetHandleBlobElement(blockVariableInternal.m_AttributeListHandle, (uint)i, Attributes[i].handle);
                }

                var returnTypeHandle = container.AddBlockVariableInternal(blockVariableInternal);

                return(new BlockVariable(container, returnTypeHandle));
            }