Собственный туман (1.7.10)

Да не, я просто пишу везде version. Думал, мол обязательно.
 
Там когда ты указываешь в ShaderGroup путь к Json'у, то там (как я понял) указаны ссылки на другое Json'ы, которые в ShaderManager ищутся в minecraft:shaders/program. Хз как исправить
 
Ты явно не понимаешь что творишь, раз у тебя в конфиге и в самом шейдере отличаются наборы униформов.

Лучше возьми книжку, которую тебе посоветовали, напиши какое-нибудь простенькое стороннее приложение, и там мало-помало изучай принцип работы OpenGL, а потом и к шейдерам приступишь.

Без каких-то знаний по OpenGL наскоком эту тему не взять, а в ином случае, если тебе просто "помогут" (ты скопируешь код и убежишь довольный), пользы тебе от этого ноль. Если тебе только не нравится копипастить чужой код без разбора его принципа работы.
 
Шейдер  используется перед отрисовкой чего-то. Запускать функцией glUseProgram, останавливать той же функцией с параметром "0".
 
Liahim написал(а):
Кстати, интересный вопрос: несколько шейдеров сразу могут быть запущены?
Нет, нельзя. За раз может работать только один шейдер.
Ну, то есть, люди делают модульные шейдеры, где уже можно с помощью настраиваемых параметров "совмещать" шейдеры, но это совсем другая тема.
 
Oldestkon да я, как бы, пытаюсь хоть какой-нибудь результат получить, чтобы было на чём тренироваться... Ибо забивать гвозди не научишься, читая книжки... Для этого нужно взять реальный молоток в руку.Да и что ты имеешь ввиду под словами "стороннее приложение"? Что-то не связанное с майном? Я вот вижу в туторах народ, например, рендерит квадрат в каком-то окошке. Я даже не знаю как это окошко вызвать и где писать сам код, что б квадрат вывелся на экран.В общем, чтобы начать изучение, нужен инструмент.
 
Oldestkon написал(а):
Нет, нельзя. За раз может работать только один шейдер.
Мать! Ну, тады шейдеры мне вряд ли помогут...
Мне нужен именно постоянный туман, который не будет зависеть от локальных настроек... И который я мог бы контролировать через мод...
Бяда...
[merge_posts_bbcode]Добавлено: 11.06.2016 00:02:16[/merge_posts_bbcode]

nikita488 написал(а):
Эт чо? Программа?

[merge_posts_bbcode]Добавлено: 11.06.2016 00:05:03[/merge_posts_bbcode]

Так, ладно... А какие могут быть варианты?Можно отрисовать бесконечную плоскость, ниже которой всё будет как бы размываться?
 
За раз - значит за раз, а не за кадр.
Ты можешь отрисовать часть сцены с одним шейдером, часть сцены с другим.
Смотри, разобью твою задачу на шаги:
Тебе надо наложить на сцену туман. Например, из той статьи, volumetric fog. Там подробно описано как всё это делается.
Что тебе требуется сделать:
- Отключить стандартный туман, если надо, конечно.
- Перехватить финальный кадр сцены и наложить на него туман. Как это делается: в shaderGroup тебе даётся ссылка на ванильный framebuffer, где в прикреплённой текстуре содержится отрисованная сцена на текущий момент. В эту текстурку можно рисовать, поэтому тебе надо сделать копию этой текстуры (с одной текстурой нельзя одновременно проводить операции чтения\записи ввиду устройства GPU), из которой ты будешь читать данные (а именно глубину пикселя (точки) в координатах камеры для вычисления цвета тумана), и рисовать в ту, из которой копировал.
(примечание: кстати, скорее всего в твоём случае можно не копировать текстуру, а просто сразу сразу отдавать нужный цвет, если тебе подойдет применение этого шейдера для отрисовки полноэкранного квада)
- Перед этим тебе понадобится, как указано в статье, в две отдельные текстуры дополнитель нарисовать меш, описывающий туман, с двумя разными параметрами отрисовки, это необходимо для вычисления плотности тумана в точке.
- Ну и наконец, собрать всё воедино, отправить все нужные данные в шейдер, описанный во втором шаге, и запустить его в конце кадра, после чего отрисовать всю текстуру сцены на полноэкранный квад.

LWJGL - клёвая штука, переадресовывающая вызовы нативному OpenGL. Короче, шагом марш читать туториалы по LWJGL и рисовать треугольнички в отдельных окошках.
 
Эм?

А не легче нарисовать в 1 ФБО, слить текстуру ФБО тумана с текстурой ФБО игры. Дальше текстура сама биндится на экран
?????
Профит

З.Ы. Читал тебя, да не понял.

Upd: Перечитал, понял.
 
Зачем рисовать туман в отдельную текстуру? Ты что, дуду? Это понадобится только для МЕШЕЙ тумана, описывающих его форму. А можно просто закодировать меш уравнением плоскости прямо в шейдере.

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

В твоём случае, помимо отрисовки мешей тумана, мы тратим ещё кучу памяти и перекидываний текстурок только ради того чтобы сблендить текстурку тумана с текстуркой сцены? Зачем? Это лишние затраты:
1) Памяти на хранение ненужного FBO (и вообще, нах FBO, если можно сделать отдельную текстуру тому же FBO?)
2) Процессоров ГПУ (на блендинг)
3) Шины (на перекидывание говен)
 
Моя твоя не понимать. Я, по сути своего жалкого существования, не могу понимать длинные тексты, а тем более со скобками. Напишешь для дурачка вкратце?
 
1) Отменяем ванильный туман
2) Если надо, рисуем наши меши тумана в отдельные текстуры, которые описывают его форму в пространстве
3) Рисуем полноэкранный квад с текстурой сцены С ПОМОЩЬЮ шейдера, в котором сразу применяем туман, который вычисляется либо исходя из двух текстурок мешей тумана нарисованных раньше, либо исходя из заложенного в шейдер уравнения
4) Не забывая отменить отрисовку полноэкранного квада майносвким кодом
 
Пропускаем текстуру основного ФБО через шейдер, где рисуем туман. Я вот так понял(о, я ещё тот мудак, я тебя и понять через месяц не смогу, так уж я(дибил)). И хватит дописывать сообщения))0)
 
Ну и на том спасибо. Тем более, я не собираюсь это делать. Возможно. Ну на спор с кем-нибудь, если только.
 
Oldestkon, то есть, по твоему варианту не нужно никаких дополнительных шейдеров в папке с ресурсами, а всё рисуется уже в эклипсе с использованием вышеуказанной библиотеки?
P.S. Последовательность даже я понял... Остаётся разобраться в деталях.
 
Назад
Сверху