Jak wyglądają domyślne shadery GLSL? dla wersji 330

Jak wyglądają domyślne shadery wierzchołków, fragmentów i geometrii GLSL dla wersji # 330?

Będę używał #version 330 GLSL w wersji 3.30 NVIDIA via CG compiler, ponieważ to obsługuje moja karta graficzna.

Z domyślnymi shaderami mam na myśli shadery, które robią dokładnie to samo, co karta graficzna, gdy program shadera jest wyłączony.

Nie mogę znaleźć dobrego przykładu dla #version 330. Googlowałem cały dzień. Nie wiadomo, czy wywołany jest termin default shader coś innego jak banalne lub podstawowe i jeśli dlatego nie mogę znaleźć.

Wszelkie zalecenia dotyczące książki z wersją 330 lub link do łatwego samouczka dla początkujących z wersją 330 byłyby również świetne.

Przykład trywialnego cieniowania wierzchołków w #wersji 110, robi domyślną transformację wierzchołków

#version 110

void main()
{
    gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
}

Przykład trywialnego shadera fragmentów w # wersji 110, zmienia kolor na czerwony

#version 110

void main()
{
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
 23
Author: Alim Ul Gias, 2011-12-26

1 answers

Nie ma "domyślnych" shaderów z OpenGL. Wygląda na to, że chcesz bardzo prosty przykład shadera, który przekształca wierzchołki w spację i nadaje im kolor, więc proszę bardzo: {]}

Vertex shader:

#version 330

layout(location = 0)in vec4 vert;

uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;

void main()
{
    gl_Position = projection * view * model * vert;
}

Fragment shader:

#version 330

out vec4 fragColor;

void main()
{
    fragColor = vec4(1.0, 0.0, 0.0, 1.0);
}

Rdzeń OpenGL 3.3 profile zmniejsza wsparcie dla wielu starych rzeczy o stałych funkcjach, takich jak stos matrix. Od ciebie oczekuje się obsługi własnych matryc i wysyłania ich do shaderów. Nie ma ftransform, a gl_Position jest prawie jedyna poprawna zmienna gl_*.

Podczas gdy glBindAttribLocation nie jest przestarzała, preferowaną metodą definiowania lokalizacji atrybutów wierzchołków jest "layout (location = x)" w GLSL.

W cieniowaniu wierzchołków, "atrybut" jest teraz "w", a "zmienny" jest teraz "poza". W cieniowaniu fragmentów "zmienna" jest teraz "in", a " gl_FragColor "jest definiowana przez zmienną" out". Wierzę, że gl_FragColor jest nadal poprawny, ale teraz Można użyć zmiennej out do zdefiniowania kolor.

Ten samouczek jest bardzo dobry i uczy core OpenGL i GLSL 3.30, polecam go użyć, aby pomóc ci dowiedzieć się więcej o GLSL. Pamiętaj również, że strona referencyjna GLSL jest twoim przyjacielem.

 35
Author: Robert Rouhani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-18 11:30:22