В настоящее время я работаю с исходным кодом из книги GPU Gems 2, и я пытаюсь преобразовать Improved Perlin Noise implementation (Chapter 26) для работы с DirectX 11. Хотя относительно безболезненно, оптимизация, которую они использовали, была слегка раздражающей из-за их использование текстур для поиска. Исходный код использует теперь, казалось бы, не существующий метод для объявления текстур, которые я не знаю, как преобразовать в современный DirectX.Есть ли DirectX 11 (HLSL 5.0), эквивалентный синтаксису текстурной текстуры DirectX 9?
Примером типа текстуры декларации я смысл: (от inoise.fxh файла)
texture permTexture
<
string texturetype = "2D";
string format = "l8";
string function = "GeneratePermTexture";
int width = 256, height = 1;
>;
Тип текстуры, формат, ширина и высота Я понимаю, как настроить внешнюю шейдер, часть string function = "GeneratePermTexture"
, хотя меня бросила.
Функция она имеет в виду: (в том же файле)
float4 GeneratePermTexture(float p : POSITION) : COLOR
{
return permutation[p*256]/255.0;
}
Там в комментарий выше этой секции файла (который содержит больше этих функций для своих текстур) говорят // Functions to generate textures using CPU runtime
Есть ли простой способ сделать это с помощью Dx11? Мой текущий след исследования предполагает, что я должен использовать часть функций CreateTexture.
Стандартные аннотации также привязаны к старой системе эффектов, поэтому они действительно не используются в контексте «прямой HLSL» кодировки, которая является рекомендуемым современным решением. Тем не менее, вы можете использовать [Эффекты для Direct3D 11] (https://github.com/Microsoft/FX11), если хотите. См. [Эту тему] (https://fx11.codeplex.com/discussions/450240) для получения подробной информации о статусе «Эффекты» и [этой теме] (https://fx11.codeplex.com/discussions/551307) для FX против HLSL. –
Спасибо за разъяснение, я ищу предварительные генерации изображений сейчас. –