in Source/Wrapper/Program.cs [34:108]
static void Main(string[] args)
{
string source = File.ReadAllText("shader.hlsl");
Wrapper.SourceDesc sourceDesc = new Wrapper.SourceDesc()
{
entryPoint = "PS",
stage = Wrapper.ShaderStage.PixelShader,
source = source,
};
Wrapper.OptionsDesc optionsDesc = Wrapper.OptionsDesc.Default;
//optionsDesc.packMatricesInRowMajor = true;
//optionsDesc.enable16bitTypes = true;
//optionsDesc.enableDebugInfo = true;
//optionsDesc.disableOptimizations = true;
//optionsDesc.optimizationLevel = 3;
//optionsDesc.shaderModel = new Wrapper.ShaderModel(6, 2);
//optionsDesc.shiftAllCBuffersBindings = 10;
//optionsDesc.shiftAllTexturesBindings = 20;
//optionsDesc.shiftAllSamplersBindings = 30;
//optionsDesc.shiftAllUABuffersBindings = 40;
Wrapper.TargetDesc targetDesc = new Wrapper.TargetDesc()
{
language = Wrapper.ShadingLanguage.Glsl,
version = "460",
asModule = false,
};
Wrapper.Compile(ref sourceDesc, ref optionsDesc, ref targetDesc, out Wrapper.ResultDesc result);
if (result.hasError)
{
string warning = Marshal.PtrToStringAnsi(Wrapper.GetShaderConductorBlobData(result.errorWarningMsg),
Wrapper.GetShaderConductorBlobSize(result.errorWarningMsg));
Console.WriteLine("*************************\n" +
"** Error output **\n" +
"*************************\n");
Console.WriteLine(warning);
}
else
{
if (!result.isText)
{
Wrapper.DisassembleDesc disassembleDesc = new Wrapper.DisassembleDesc()
{
language = targetDesc.language,
binarySize = Wrapper.GetShaderConductorBlobSize(result.target),
binary = Wrapper.GetShaderConductorBlobData(result.target),
};
Wrapper.Disassemble(ref disassembleDesc, out Wrapper.ResultDesc disassembleResult);
Wrapper.DestroyShaderConductorBlob(result.target);
Wrapper.DestroyShaderConductorBlob(result.errorWarningMsg);
result = disassembleResult;
}
if (result.isText)
{
string translation = Marshal.PtrToStringAnsi(Wrapper.GetShaderConductorBlobData(result.target),
Wrapper.GetShaderConductorBlobSize(result.target));
Console.WriteLine("*************************\n" +
"** Translation **\n" +
"*************************\n");
Console.WriteLine(translation);
}
}
Wrapper.DestroyShaderConductorBlob(result.target);
Wrapper.DestroyShaderConductorBlob(result.errorWarningMsg);
Console.Read();
}