2011-07-15 12 views
10

Dla jasności, zacznę moje pytanie:Czy RenderMonkey ma błąd w mapowaniu strumienia TEXCOORD dla GLSL?

Czy można użyć (w kodzie shaderów) niestandardowy atrybut name które ustawione dla wykorzystania TEXCOORD w (OpenGL) mapowanie strumienia w RenderMonkey 1.82 czy muszę użyć gl_MultiTexCoord0? (Pytanie może być ważne dla normalnego użytkowania też, tj nazwą niestandardową lub gl_Normal)

Tło:

Korzystanie RenderMonkey wersji 1.82. Udało mi się użyć mapowania strumienia do odwzorowania ogólnego atrybutu vertex "position" (i może "normalnego"), ale współrzędne tekstury nie wydają się być poprawnie przesłane. Dla kodu modułu cieniującego używam #version 330 i kwalifikatora "in" w GLSL, co powinno być w porządku, ponieważ RM nie kompiluje samych shaderów (robi to sterownik OpenGL).

Próbowałem zarówno plików .obj, jak i .3ds (wyeksportowanych z blendera), a podczas sprawdzania pliku waveob .obj znajdują się wszystkie informacje o współrzędnych tekstury, a także pozycje wierzchołków i normalne.

Jeśli nie jest to możliwe, mapowanie strumienia jest zerwane i nie ma sensu nazywanie zmiennych w edytorze odwzorowania strumienia (poza strumieniem pozycji wierzchołków, który działa), ponieważ trzeba użyć wbudowanego zmienne mimo to.

Aktualizacja: Jeśli przy użyciu nieaktualnych zmiennych wbudowanych, trzeba używać trybu zgodności w np shaderów

#version 330 compatibility 
out vec2 vTexCoord; 

, aw głównej funkcji:

vTexCoord = vec2(gl_MultiTexCoord0); 

(Teraz nie jestem również pewny, czy mapowanie strumienia normalnych jest poprawne, jak tylko dostałem współrzędne tekstury, to miałem normalne problemy i musiałem powrócić do gl_Normal.)

Oto obraz działającego rozwiązania, ale z wbudowanymi zmiennymi (i tak, skomentowana zmienna texcoord w obrazie nie ma takiej samej nazwy jak w oknie odwzorowania strumienia, ale miała taką samą nazwę, gdy próbowałem go używać, więc jest OK): Stream mapping bypassed with built in variables

+1

nie mam AN zapytaj, ale mogę zasugerować alternatywę dla wielu platform, ShaderMaker: http://cg.in.tu-clausthal.de/teaching/shader_maker/index.shtml – appas

+0

Dziękuję za sugestię. Nie oceniłem ShaderMaker'a, ale wydaje się, że jest skierowany do ustalonego potoku. Podobno istnieje inny projekt o nazwie Lumina, który również może być alternatywą. – Deorbit

+0

Czy Render Monkey może w ogóle obsłużyć 3,30 shaderów? Myślałem, że to tylko dla OpenGL 2.1 ... –

Odpowiedz

0

można spróbować użyć atrybutów generycznego wierzchołków, patrz http://open.gl, że to świetny poradnik;) (ale myślę, że to oznacza, że ​​trzeba przepisać kod do instrukcji. uchwyt przemiany ...)

0
#version 330 

layout(location = 0) in vec3 bla_bla_bla_Vertex; 
layout(location = 2) in vec3 bla_bla_bla_Normal; 
layout(location = 8) in vec3 bla_bla_bla_TexCoord0; 

jest to roztwór roboczy dla RM 1,82