Autor Wątek: GLSL - dynamiczne indeksowanie tablicy uniform  (Przeczytany 668 razy)

Offline Montjet

  • Użytkownik

# Wrzesień 06, 2016, 19:47:17
#edit
Problemem okazała się interpolacja współrzędnych - wyłączenie przy indeksie rozwiązało błąd .

--------------
Problem występuje w shaderach renderowanie mapy do gry.

W vertex shader wyliczam texCoord oraz indeks heightMapy:

out vec3 globalCoord;

(...)

vec2 texCoord = abs(position.xy / terrainInfo.x);
vec2 intTexCoord = vec2(floor(texCoord.x), floor(texCoord.y));
globalCoord = vec3(texCoord - intTexCoord, floor(texCoord.x) + terrainInfo.y * floor(texCoord.y));
, gdzie terrainInfo.x to współczynnik opisujący jak "gęsto" będzie wyświetlana heightMapa.

globalCoord.xy - współrzędne tekstury
globalCoord.z - indeks heightMapy

Tutaj działa wszystko bez zarzutu - tekstury wyświetlają się prawidłowo, problem gdy chcę te współrzędne użyć w innym celu - fragment shader:
in vec3 globalCoord;

(...)
uniform uvec2[9] pathMapInfo;

out vec4 frag_colour;

void main () {
(...)
uint h = pathMapInfo[int(globalCoord.z)].x;
for(uint i = 0; i < h; ++i)
{

(...)
}
}
uint h = pathMapInfo[int(globalCoord.z)].x; - Tu odbywa się dynamiczne indeksowanie - przy stałej nie ma problemu, przy dynamicznemu indeksowaniu pojawia się komunikat : "A TDR has been detected".
Jakieś sugestie?
« Ostatnia zmiana: Wrzesień 06, 2016, 21:00:44 wysłana przez Montjet »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych