0 / 0 / 0
Регистрация: 26.12.2020
Сообщений: 9
1

Как работает шейдер

16.10.2022, 13:56. Показов 518. Ответов 4
Метки c++, glsl (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Возник такой вопрос при изучении шейдеров. К примеру: есть шейдер который рисует круг и смещает его по кругу от начальной точки координат(то есть левый нижний угол). И проблема в том, что я не особо понимаю почему исходя из всех операций с координатой пикселя, передавая его в gl_FragColor происходит такая магия.

glSlang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifdef GL_ES
precision mediump float;
#endif
 
uniform vec2 u_resolution;
uniform float u_time;
 
float circleShape(vec2 position, float radius)
{
    return step(radius, length(position));
}
 
void main()
{
    vec2 position = gl_FragCoord.xy / u_resolution;
    vec2 translate = vec2(sin(u_time), cos(u_time));
    position += translate;
 
    vec3 color = vec3(0.0);
 
    float circle = circleShape(position, 0.2);
 
    color = vec3(circle);
 
    gl_FragColor = vec4(color, 1.0);
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2022, 13:56
Ответы с готовыми решениями:

Не работает шейдер! OpenGL, Qt
Здравствуйте, уважаемые форумчане. Заранее извиняюсь за длинный код. Я новичок в opengl, учусь по...

Не работает пиксельный шейдер
Использую GLSL и Tao.Framework. Вот коды шейдеров: private string vertex_shader = {/* ...

Шейдер работает по разному
Приветствую всех, у меня есть шейдер: Shader "Custom/OnlyZeroWithBump" { Properties {...

Фрагментный шейдер не работает
Уже вот несколько недель ищу решение проблемы, но пока безрезультатно. Почему-то отваливается...

4
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
16.10.2022, 14:28 2
Цитата Сообщение от Aiz31 Посмотреть сообщение
не особо понимаю почему исходя из всех операций с координатой пикселя, передавая его в gl_FragColor происходит такая магия
Что-то конкретно не понятно или вообще ничего не понятно?
Если второе, то форум не лучшее место для изучения теории...
0
0 / 0 / 0
Регистрация: 26.12.2020
Сообщений: 9
16.10.2022, 16:44  [ТС] 3
Я думаю скорее 2
0
2817 / 2325 / 703
Регистрация: 29.06.2020
Сообщений: 8,577
16.10.2022, 17:07 4
У меня по этой теме точно 2. Я даже не знаю : что такое шейдер, слышал что что то там в видеокарте такое есть
Гугл -> Вики = Шейдер - программа для процессора видеокарты. Гы.

Цитата Сообщение от Aiz31 Посмотреть сообщение
Как работает шейдер
Так же как и программы для центрального процессора.
Исполняя инструкции.
0
Just Do It!
3837 / 2283 / 636
Регистрация: 23.09.2014
Сообщений: 7,052
Записей в блоге: 2
17.10.2022, 03:50 5
Цитата Сообщение от Aiz31 Посмотреть сообщение
И проблема в том, что я не особо понимаю почему исходя
из всех операций с координатой пикселя, передавая его в gl_FragColor происходит такая магия.
на самом деле всё очень и очень просто.

но чтобы избежать риск сделать объяснение более сложным чем сам рассматриваемый в своей простоте предмет
я заострю ваше внимание всего лишь на двух моментах:

1.
Любой шейдер запускается каждый раз для каждого пикселя!

2.
Чтобы окрасить пиксель нужно проверить некое заданное автором условие.
условие - оно же синоним - критерий попадания.

и тут ваще задача децкая,
и на самом деле на форуме её достаточно часто решают школьники,
например, тут:
Составить программу для подсчета количества точек попавших в заданную область
или вот тут:
Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости
и ещё 100500 тут на форуме такого рода задач.

Разберите их и тогда вы поймёте всю шейдерную магию!

и обязательно практика:
вот годный полигон:
https://www.shadertoy.com/view/DslGDn

там ваш шейдер, с которым я чуть поигрался ...

это два момента и есть ПОЛНЫЙ КЛЮЧ К ПОНИМАНИЮ работы шейдеров.
0
17.10.2022, 03:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2022, 03:50
Помогаю со студенческими работами здесь

Некорректно работает шейдер при лайтмапе
В чем может быть следующая проблема, которую отразил на видео ниже? Без запеченного освещения:...

OpenGL ES 2.0 Шейдер работает только на эмуляторе
Здравствуйте! Возникла проблема с шейдером "тайлинг с отражением". На эмуляторе GENYMOTION...

Мой шейдер почему то неправильно работает
Пытаюсь сделать шейдер, создающий эффект черной дыры, которая искажает вокруг себя пространство и...

Как написать свой шейдер
Я перерыл...

Как написать вершинный шейдер
Добрый вечер, уважаемые. Пытаюсь написать пазлы на libgdx и запнулся на расчете координат для...

OpenGL ES 2.0:image masking -можно ли передать изображение в шейдер как массив а не как текстуру
Допустим у меня есть два изображения разных размеров и соотношения сторон. Первое - маска(альфа)....

Как прилинковать скомпилированный шейдер в exe?
Подскажите, пожалуйста, Возможно ли каким-нибудь образом интегрировать скомпилированный .cso...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru