Задать вопрос
Dyikot
@Dyikot

Какие обычно аргументы используют для фрагментного шейдера?

Пытаюсь разорбратся в фрагментный шедйерах на примере HLSL. И у меня работают только такие примеры:
Пример 1. Нету аргументов.
float4 main() : SV_Target
{
    return float4(1, 0, 0, 1);
}

Пример 2. UV координаты.
float4 main(float2 uv: TEXCOORD0) : SV_Target
{
    return float4(uv.x, 0, 0, 1);
}


И в обоих вариантах фигура красного цвета.
Когда использую другие аргменты такие как цвет и позицию, и их комбацию то ничего не отображается.
Использую новую фичу SDL 3.4 которая добавляет возможность использования фрагментного шейдера к 2D API. В документации ничего не указано какие аргументы могут быть переданы.
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine: тариф PRO
    9 месяцев
    Далее
  • Skillbox
    Профессия Разработчик игр
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
Фрагментный шейдер получает ровно то, что отдаёт вершинный. В SDL3's 2D рендерере это COLOR0 и TEXCOORD0:

struct PSInput {
    float4 v_color : COLOR0;
    float2 v_uv   : TEXCOORD0;
};


TEXCOORD0 работает — это uv. Цвет принимай как COLOR0 (именно с нулём). Позиция в fragment shader только через SV_POSITION, но там уже пиксельные координаты, не 0-1. p.s. произвольные атрибуты SDL не пробрасывает, для этого нужен свой vertex shader через GPU API.
Ответ написан
maaGames
@maaGames
Погроммирую программы
Почему пишешь SV_TARGET, а не SV_TARGET0 ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы