Я работаю над проектом Unity3D, который на мгновение опирается на трехмерную текстуру.Эмуляция 3D-текстуры в шейдере (связанная с субпикселом)
Проблема заключается в том, что Unity позволяет пользователям Pro использовать Texture3D. Поэтому я ищу альтернативу Texture3D, возможно, одномерную текстуру (хотя и не изначально доступную в Unity), которая интерпретируется как 3-мерная в шейдере (которая использует 3D-текстуру).
Есть ли способ сделать это, в то время как (предпочтительно) хранить информацию подпикселя?
(теги GLSL и Cg добавил, что здесь лежит суть проблемы)
Edit: Проблема решается здесь, а также: webgl glsl emulate texture3d Однако это еще не закончена и работает должным образом.
Редактировать: В настоящее время я не обращаю внимания на информацию о субпикселе. Поэтому любая помощь по преобразованию 2D-текстуры в 3D-информацию оценивается!
Edit: я отказался свой ответ, как это не является достаточным, как еще:
float2 uvFromUvw(float3 uvw) {
float2 uv = float2(uvw.x, uvw.y/_VolumeTextureSize.z);
uv.y += float(round(uvw.z * (_VolumeTextureSize.z - 1)))/_VolumeTextureSize.z;
return uv;
}
С инициализации как Texture2D (volumeWidth, volumeHeight * volumeDepth).
Большую часть времени он работает, но иногда он показывает неправильные пиксели, возможно, из-за информации о субпикселях, которую он набирает. Как я могу это исправить? Зажим ввода не работает.
Я забыл указать, что X компонент текстуры содержит значение текущего Slice в то время как компонент Y содержит следующее значение среза. Таким образом, вы можете задерживаться вдоль направления W, используя единственный кран текстуры. Это ограничивает эти «3D» текстуры только двумя компонентами, хотя это было нормально, поскольку я сохранил только одно монохроматическое значение шума ... – Patapom
Это довольно гениальный, я должен сказать! Спасибо за помощь :) – RobotRock
Можете ли вы подробнее рассказать о магических числах? Или у вас где-то есть документация? – RobotRock