Example #1
0
void LoadShaderInfo(const uint32_t ui32MajorVersion,
                    const uint32_t ui32MinorVersion,
                    const ReflectionChunks* psChunks,
                    ShaderInfo* psInfo)
{
    const uint32_t* pui32Inputs = psChunks->pui32Inputs;
    const uint32_t* pui32Inputs11 = psChunks->pui32Inputs11;
    const uint32_t* pui32Resources = psChunks->pui32Resources;
    const uint32_t* pui32Interfaces = psChunks->pui32Interfaces;
    const uint32_t* pui32Outputs = psChunks->pui32Outputs;
    const uint32_t* pui32Outputs11 = psChunks->pui32Outputs11;
    const uint32_t* pui32OutputsWithStreams = psChunks->pui32OutputsWithStreams;
    const uint32_t* pui32PatchConstants = psChunks->pui32PatchConstants;

    psInfo->eTessOutPrim = TESSELLATOR_OUTPUT_UNDEFINED;
    psInfo->eTessPartitioning = TESSELLATOR_PARTITIONING_UNDEFINED;

    psInfo->ui32MajorVersion = ui32MajorVersion;
    psInfo->ui32MinorVersion = ui32MinorVersion;


    if(pui32Inputs)
        ReadInputSignatures(pui32Inputs, psInfo, 0);
    if(pui32Inputs11)
        ReadInputSignatures(pui32Inputs11, psInfo, 1);
    if(pui32Resources)
        ReadResources(pui32Resources, psInfo);
    if(pui32Interfaces)
        ReadInterfaces(pui32Interfaces, psInfo);
    if(pui32Outputs)
        ReadOutputSignatures(pui32Outputs, psInfo, 0, 0);
    if(pui32Outputs11)
        ReadOutputSignatures(pui32Outputs11, psInfo, 1, 1);
    if(pui32OutputsWithStreams)
        ReadOutputSignatures(pui32OutputsWithStreams, psInfo, 0, 1);
    if(pui32PatchConstants)
        ReadPatchConstantSignatures(pui32PatchConstants, psInfo, 0, 0);

    {
        uint32_t i;
        for(i=0; i<psInfo->ui32NumConstantBuffers; ++i)
        {
            bstring cbufName = bfromcstr(&psInfo->psConstantBuffers[i].Name[0]);
            bstring cbufThisPointer = bfromcstr("$ThisPointer");
            if(bstrcmp(cbufName, cbufThisPointer) == 0)
            {
                psInfo->psThisPointerConstBuffer = &psInfo->psConstantBuffers[i];
            }
        }
    }
}
Example #2
0
void LoadShaderInfo(const uint32_t ui32MajorVersion,
    const uint32_t ui32MinorVersion,
    const uint32_t* pui32Inputs, const uint32_t* pui32Resources,
    const uint32_t* pui32Interfaces, ShaderInfo* psInfo)
{
    psInfo->eTessOutPrim = TESSELLATOR_OUTPUT_UNDEFINED;
    psInfo->eTessPartitioning = TESSELLATOR_PARTITIONING_UNDEFINED;

    psInfo->ui32MajorVersion = ui32MajorVersion;
    psInfo->ui32MinorVersion = ui32MinorVersion;


    if(pui32Inputs)
        ReadInputSignatures(pui32Inputs, psInfo);
    if(pui32Resources)
        ReadResources(pui32Resources, psInfo);
    if(pui32Interfaces)
        ReadInterfaces(pui32Interfaces, psInfo);

    {
        uint32_t i;
        for(i=0; i<psInfo->ui32NumConstantBuffers;++i)
        {
            bstring cbufName = bfromcstr(&psInfo->psConstantBuffers[i].Name[0]);
            bstring cbufThisPointer = bfromcstr("$ThisPointer");
            if(bstrcmp(cbufName, cbufThisPointer) == 0)
            {
                psInfo->psThisPointerConstBuffer = &psInfo->psConstantBuffers[i];
            }
        }
    }
}