Перенос XNA Shader pass, blend и cull mode в шейдерный ярлык Unity - PullRequest
0 голосов
/ 27 сентября 2018

Мне пришлось перенести XNA-шейдер в шейдер Unity и проверить, правильно ли я это сделал.

Раздел Pass1, в котором используется альфа-смешивание, например SrcBlend, DestBlend, и для параметра cull установлено значение none.это единственное место, где я хочу убедиться, что я правильно понял.

Это версия шейдера XNA:

pass Pass1
{
    AlphaBlendEnable = true;
    SrcBlend = SRCALPHA;
    DestBlend = INVSRCALPHA;
    CullMode = None;

    VertexShader = compile vs_2_0 TheVertexShader();
    PixelShader = compile ps_2_0 ThePixelShader();
}

Это порт Unity Shaderlab, который я сделал:

Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
LOD 100
Blend SrcAlpha One
Blend DstAlpha OneMinusSrcAlpha
ZWrite Off
Cull Off 

Кажется, в Unity все работает нормально, но точно ли это эквивалентные настройки прохода в Unity?Если нет, то какие изменения требуются, чтобы получить точную эквивалентность.

1 Ответ

0 голосов
/ 04 января 2019

Ключевое слово "Смешивать" следует указывать только один раз: два ключевых слова после него - это коэффициенты смешивания, используемые для источника и назначения соответственно.Вы можете думать об этом как о формате "Blend [SrcBlend] [DstBlend]".

Вот правильное смешивание:

Blend SrcAlpha OneMinusSrcAlpha

Это приводит к базовому альфа-смешению.

...