Как скомпилировать из ассемблера шейдерный код в DirectX 11? - PullRequest
0 голосов
/ 23 апреля 2019

Функция D3DXAssembleShader использовалась в DirectX 9 для компиляции шейдеров из Assembly.Это не поддерживается в DirectX 11. Есть ли какая-либо альтернатива для создания шейдеров из кода на Ассемблере?

Я знаю о компиляции из файлов fx или hlsl, но для целей моего проекта я должен компилировать только с использованием ассемблера.

В DirectX 9 использовался следующий код:

static const char VertexShaderCode[] = \
    "vs.3.0\n"
    "dcl_position v0\n"
    "dcl_position o0\n"
    "mov o0, v0\n";
D3DXAssembleShader(VertexShaderCode,sizeof(VertexShaderCode), 0,0, DLL, &VSBuffer, 0);

Я ищу альтернативу приведенному выше коду в DirectX11, используя dll D3D11.

Я хочу изменить свой asm-файлкак ниже и создайте вершинный и пиксельный шейдеры:

dcl_output o0.xyzw -> dcl_output.o0.zw

Смогу ли я сделать то же самое в файле FX или HLSL?

Файл FX:

cbuffer ConstantBuffer : register( b0 )
{
    matrix World;
    matrix View;
    matrix Projection;
}

//--------------------------------------------------------------------------------------
struct VS_OUTPUT
{
    float4 Pos : SV_POSITION;
    float4 Color : COLOR0;
};

//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
VS_OUTPUT VS( float4 Pos : POSITION, float4 Color : COLOR )
{
    VS_OUTPUT output = (VS_OUTPUT)0;
    output.Pos = mul( Pos, World );
    output.Pos = mul( output.Pos, View );
    output.Pos = mul( output.Pos, Projection );
    output.Color = Color;
    return output;
}


//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS( VS_OUTPUT input ) : SV_Target
{
    return input.Color;
}

1 Ответ

0 голосов
/ 24 апреля 2019

Компиляция из сборки шейдеров HLSL официально не поддерживается для Shader Model 4.0, 4.1, 5.0 или 5.1.

При сборке с fxc.exe вы получаете разборку для целей отладки и оптимизации

...