public TagDescriptor Build()
            {
                var descriptor = new TagDescriptorInternal();

                descriptor.m_NameHandle  = container.AddString(name);
                descriptor.m_ValueHandle = container.AddString(value);
                var resultHandle = container.AddTagDescriptorInternal(descriptor);

                return(new TagDescriptor(container, resultHandle));
            }
            public Template Build()
            {
                var templateInternal = new TemplateInternal()
                {
                    m_NameHandle = container.AddString(Name),
                    m_AdditionalShaderIDStringHandle = container.AddString(AdditionalShaderID),
                    m_LinkerHandle = container.AddTemplateLinker(linker)
                };

                templateInternal.m_PassListHandle          = FixedHandleListInternal.Build(container, passes, (p) => (p.handle));
                templateInternal.m_TagDescriptorListHandle = FixedHandleListInternal.Build(container, tagDescriptors, (t) => (t.handle));

                var returnTypeHandle = container.AddTemplateInternal(templateInternal);

                return(new Template(container, returnTypeHandle));
            }
Example #3
0
            public TemplatePass Build()
            {
                var templatePassInternal = new TemplatePassInternal()
                {
                    m_DisplayNameHandle   = container.AddString(displayName),
                    m_ReferenceNameHandle = container.AddString(referenceName),
                };

                templatePassInternal.m_PassIdentifierHandle           = container.AddPassIdentifier(passIdentifier.SubShaderIndex, passIdentifier.PassIndex);
                templatePassInternal.m_VertexStageElementListHandle   = FixedHandleListInternal.Build(container, vertexStageElements, (e) => BuildStageElement(e));
                templatePassInternal.m_FragmentStageElementListHandle = FixedHandleListInternal.Build(container, fragmentStageElements, (e) => BuildStageElement(e));
                templatePassInternal.m_TagDescriptorListHandle        = FixedHandleListInternal.Build(container, tagDescriptors, (o) => (o.handle));

                var returnTypeHandle = container.AddTemplatePassInternal(templatePassInternal);

                return(new TemplatePass(container, returnTypeHandle));
            }
Example #4
0
            public StructField Build()
            {
                var structFieldInternal = new StructFieldInternal();

                structFieldInternal.m_NameHandle          = container.AddString(name);
                structFieldInternal.m_TypeHandle          = type.handle;
                structFieldInternal.m_AttributeListHandle = FixedHandleListInternal.Build(container, attributes, (a) => (a.handle));
                var returnHandle = container.AddStructFieldInternal(structFieldInternal);

                return(new StructField(container, returnHandle));
            }
Example #5
0
            public CustomizationPoint Build()
            {
                var customizationPointInternal = new CustomizationPointInternal
                {
                    m_NameHandle = container.AddString(name),
                };

                customizationPointInternal.m_InputListHandle          = FixedHandleListInternal.Build(container, inputs, (v) => (v.handle));
                customizationPointInternal.m_OutputListHandle         = FixedHandleListInternal.Build(container, outputs, (v) => (v.handle));
                customizationPointInternal.m_PropertyListHandle       = FixedHandleListInternal.Build(container, properties, (v) => (v.handle));
                customizationPointInternal.m_DefaultBlockInstanceList = FixedHandleListInternal.Build(container, defaultBlockInstances, (v) => (v.handle));

                var returnTypeHandle = container.AddCustomizationPointInternal(customizationPointInternal);

                return(new CustomizationPoint(container, returnTypeHandle));
            }
            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));
            }
            public Block Build()
            {
                if (finalized)
                {
                    return(new Block(Container, blockHandle));
                }
                finalized = true;

                var blockInternal = new BlockInternal();

                blockInternal.m_NameHandle = container.AddString(name);

                blockInternal.m_DeclaredTypeListHandle       = FixedHandleListInternal.Build(container, types, (t) => (t.handle));
                blockInternal.m_ReferencedTypeListHandle     = FixedHandleListInternal.Build(container, referencedTypes, (t) => (t.handle));
                blockInternal.m_DeclaredFunctionListHandle   = FixedHandleListInternal.Build(container, functions, (f) => (f.handle));
                blockInternal.m_ReferencedFunctionListHandle = FixedHandleListInternal.Build(container, referencedFunctions, (f) => (f.handle));
                blockInternal.m_EntryPointFunctionHandle     = entryPointFunction.handle;

                // Build up the input/output variable list from the entry point function
                GetInOutTypes(entryPointFunction, out var inputType, out var outputType);
                var inputs  = BuildVariablesFromTypeFields(Container, inputType);
                var outputs = BuildVariablesFromTypeFields(Container, outputType);

                blockInternal.m_InputVariableListHandle  = FixedHandleListInternal.Build(container, inputs, (v) => (v.handle));
                blockInternal.m_OutputVariableListHandle = FixedHandleListInternal.Build(container, outputs, (v) => (v.handle));

                blockInternal.m_CommandListHandle    = FixedHandleListInternal.Build(container, m_Commands, (c) => (c.handle));
                blockInternal.m_DefineListHandle     = FixedHandleListInternal.Build(container, m_Defines, (d) => (d.handle));
                blockInternal.m_IncludeListHandle    = FixedHandleListInternal.Build(container, m_Includes, (i) => (i.handle));
                blockInternal.m_KeywordListHandle    = FixedHandleListInternal.Build(container, m_Keywords, (k) => (k.handle));
                blockInternal.m_PragmaListHandle     = FixedHandleListInternal.Build(container, m_Pragmas, (p) => (p.handle));
                blockInternal.m_PassParentHandle     = passParentHandle;
                blockInternal.m_TemplateParentHandle = templateParentHandle;

                container.SetBlockInternal(blockHandle, blockInternal);
                return(new Block(container, blockHandle));
            }