Работя върху проект Unity3D, който за момент разчита на 3D текстура.
Проблемът е, че Unity позволява само на потребителите на Pro да използват Texture3D. Следователно търся алтернатива на Texture3D, може би едноизмерна текстура (въпреки че не е първоначално налична в Unity), която се интерпретира като 3-измерна в шейдъра (който използва 3D текстурата).
Има ли начин да направите това, като същевременно (за предпочитане) запазите информация за субпикселите?
(Добавени са тагове GLSL и Cg, защото тук е същината на проблема)
Редактиране: Проблемът е разгледан и тук: webgl glsl emulate texture3d Това обаче все още не е завършено и работи правилно.
Редактиране: За момента пренебрегвам правилната информация за субпикселите. Така че всяка помощ за конвертиране на 2D текстура, за да съдържа 3D информация, се оценява!
Редактиране: Оттеглих собствения си отговор, тъй като все още не е достатъчен:
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).
През повечето време работи, но понякога показва грешни пиксели, вероятно поради субпикселна информация, която улавя. Как мога да поправя това? Затягането на входа не работи.