in Source/Wrapper/Native.cpp [32:80]
void Compile(SourceDescription* source, OptionsDescription* optionsDesc, TargetDescription* target, ResultDescription* result)
{
Compiler::SourceDesc sourceDesc;
sourceDesc.entryPoint = source->entryPoint;
sourceDesc.source = source->source;
sourceDesc.stage = source->stage;
sourceDesc.fileName = nullptr;
sourceDesc.defines = nullptr;
sourceDesc.numDefines = 0;
Compiler::Options options;
options.packMatricesInRowMajor = optionsDesc->packMatricesInRowMajor;
options.enable16bitTypes = optionsDesc->enable16bitTypes;
options.enableDebugInfo = optionsDesc->enableDebugInfo;
options.disableOptimizations = optionsDesc->disableOptimizations;
options.optimizationLevel = optionsDesc->optimizationLevel;
options.shaderModel = {static_cast<uint8_t>(optionsDesc->shaderModel.major), static_cast<uint8_t>(optionsDesc->shaderModel.minor)};
options.shiftAllTexturesBindings = optionsDesc->shiftAllTexturesBindings;
options.shiftAllSamplersBindings = optionsDesc->shiftAllSamplersBindings;
options.shiftAllCBuffersBindings = optionsDesc->shiftAllCBuffersBindings;
options.shiftAllUABuffersBindings = optionsDesc->shiftAllUABuffersBindings;
Compiler::TargetDesc targetDesc{};
targetDesc.language = target->shadingLanguage;
targetDesc.version = target->version;
try
{
const auto translation = Compiler::Compile(sourceDesc, options, targetDesc);
if (translation.errorWarningMsg.Size() > 0)
{
result->errorWarningMsg = CreateShaderConductorBlob(translation.errorWarningMsg.Data(), translation.errorWarningMsg.Size());
}
if (translation.target.Size() > 0)
{
result->target = CreateShaderConductorBlob(translation.target.Data(), translation.target.Size());
}
result->hasError = translation.hasError;
result->isText = translation.isText;
}
catch (std::exception& ex)
{
const char* exception = ex.what();
result->errorWarningMsg = CreateShaderConductorBlob(exception, static_cast<uint32_t>(strlen(exception)));
result->hasError = true;
}
}