Преобразование шадертой в металл (кубическое отображение?) - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь переписать этот шейдер, и я застрял в строке:

float backColor = dot (texture (iChannel0, direction).rgb, channel);

как бы мне это сделать? Следуя этому уроку, я смогу передать свою кубическую текстуру здесь, но я не могу обернуться вокруг этой задачи. Прямо сейчас без этой линии я получаю несколько случайных цветов с течением времени, поэтому я предполагаю, что это часть, которую я пропустил. Я использую SceneKit с SCNProgram.

1 Ответ

1 голос
/ 19 октября 2019

Предполагая, что вы перенесли соответствующие части шейдера, загрузили карту куба и связали ее как аргумент шейдера, эквивалентная строка кода языка металлического шейдинга выглядит просто:

float backColor = dot(texCube.sample(cubeSampler, direction).rgb, channel);

где texCube имеет тип texturecube<float, access::sample>, а cubeSampler - это что-то вроде

constexpr sampler cubeSampler(coord::normalized, filter::linear, mip_filter::linear)
...