Pull to refresh

Comments 27

Пару раз пытался читать что-то про шейдеры просто что бы понять, что это такое. Каждый раз оказывался в ситуации, которую описывал Фейнман:
На конференции был один социолог, который написал работу, чтобы ее прочитали все мы — он написал ее предварительно. Я начал читать эту дьявольщину, и мои глаза просто полезли из орбит: я ни черта не мог в ней понять! Я подумал, что причина в том, что я не прочел ни одной книги из предложенного списка. Меня не отпускало это неприятное ощущение «своей неадекватности», до тех пор пока я, наконец, не сказал себе: «Я остановлюсь и прочитаю одно предложение медленно, чтобы понять, что, черт возьми, оно значит».
Итак, я остановился — наугад — и прочитал следующее предложение очень внимательно. Я сейчас не помню его точно, но это было что-то вроде: «Индивидуальный член социального общества часто получает информацию чрез визуальные, символические каналы». Я долго с ним мучился, но все-таки перевел. Знаете что это означает? «Люди читают».


А тут вот прочитал — и все понял! Супер! Спасибо большое за перевод!
О, и правда, не увидел этой статьи. Но там только первая часть, а в моём переводе все три.
Супер! Спасибо, добавил в избранное

Интересно, а сжать можно? Скажем так:


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

Давно уже, во времена флэша 11.5, участвовал в соревновании по процедурной генерации планет, результат ещё живой вот тут: http://www.fastswf.com/cugeu_M. Написан на PixelBender (потому как в то время была "нативная" поддержка его шейдеров внутри Flash) на подобном GLSL языке. Там и бампмэппинг был, и натягивание совы на глобус двухмерной текстуры на круг, и псевдо-трехмерное освещение. Интерфейс — кликнуть мышкой для создания новой планеты, водить мышкой для поворота. Предупреждение: в версии 11.8 Adobe убил поддержку JIT для шейдеров Pixel Bender, из-за чего FPS упал до нуля. Лучше всего скачать (весит 10 Кб) и запустить в standalone-плеере 11.5.

UFO just landed and posted this here
Почему депрессивная? Солнце всходит. Сейчас взойдёт — и будет вообще хорошо…
Ну или заходит. Сейчас зайдет — и будет еще лучше)
UFO just landed and posted this here
Была треть этой статьи. Первая часть.
Понимаю что перевод, но правильный ли там перевод из карты нормалей в вектор нормали?

        //By "up" direction of our normal map has the value (0.5,0.5,1.0) in terms of rgb
        //So we offset by that amount
        normalVector.x -= 0.5;
        normalVector.y -= 0.5;


Вроде каноничней:

        normalVector = 2.0 * normalVector - 1.0;


А то из-за этого у варианта в статье и чёрного цвета не возникает с противоположной от источника стороны.
Сможете написать шейдер, делающий изображение чёрно-белым? что-то я с эти заданием разобраться не могу… может кто помочь? я просто новичок в этом деле, предыдущие вроде получились
так а как эти градации прописать в коде… я не пойму
float gray = color.r * 0.299 + color.g * 0.587 + color.b * 0.114;
color.r = gray;
color.g = gray;
color.b = gray;
Если речь о градациях серого, то суммируем три компоненты цвета точки и делим на три: M= R+G+B/3, затем выставляем все три компонента в M: R=M; G=M; B=M

Если говорить о чисто чёрно-белом изображении, то можно так: вычислить M, как в предыдущем варианте, затем, если М больше некоего порогового значения (например, 0.5), то делаем точку белой, иначе — чёрной. Пороговое значение можно варьировать, получая разные результаты.

К сожалению я тоже пытался реализовать именно с помощью среднего значения, но результат получался не таким уж и хорошим. Я наткнулся на представление цвета в теликах. Там используются коэфициенты, а не среднее арифметическое.

Это уже нюансы, конечно. Человеку надо было попроще объяснить — я объяснил :)
Но в любом случае спасибо за замечание.
Там используются коэфициенты, а не среднее арифметическое.

Я использую (3R+6G+B)/10 — очень близко к общепринятым, при этом легко запоминается и хорошо записывается, а разницу в 1% глазом все-равно не заметить

Интересное наблюдение конечно) Я вот вообще как-то не парился и тупо из вики копировал...

Не понимаю как сделать задания во втором блоке с разделением экрана на 2 и соотвественно на 3 цвета, попробовал как то сравнить, что делали в первом блоке, но тоже неудачно, помогите-подскажите, плиз, у кого получилось.
Какое конкретно? Если нам нужно, чтоб в половине экрана цвет был одним, а в другой — другим, нам надо придумать формулу, что переведёт x координату в дискретное значение. Округлим левую половину до 0, а правую — до 1

Нпример так:
gl_FragColor = vec4(1.0, floor(pos.x + 0.5), pos.y, 1.0);
Я застрял на этих двух задачах:

Задача: Сможете ли вы сделать одну часть экрана красной, а другую синей? (Если не получится, то на следующем шаге я дам подсказку!)
Задача: Попробуйте разделить экран на четыре равных части разных цветов.

Даже подсказки не помогли)

Спасибо за ответ, попробую разобраться :)

Но ведь можно проще: color = lerp(color1, color2, step(pos.x, 0.5))

ShaderToy Это же отличная штука. судя по вики, даже NVidia в нее вкладывалась:
Перевод: Блог разработчиков NVidia, июнь 2016, объявлен конкурс Shadertoy Contest 2016

Столько лет а только 900+ работ. Некоторые возможно созданы одним автором. Неужели на всю планету едвали тысяча разработчиков наберется, которые умеют это делать. Я не умею, но перепрограммировать свою задумку получилось с огромной помощью других. Я вроде немного разобрался, но мне кажется это мой предел.
Sign up to leave a comment.

Articles