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

Спс...
А как же тогда добыть gl_FragCoord.z?
Это нужно GLSL ещё изучить? В МК он покатит?

P.S. Можешь в двух словах объяснить, чем твой код принципиально отличается от моего, написанного выше, и что я делаю не так? Не тот евент?
 
Что бы добыть gl_FragCoord.z надо написать свою шейдерную программу в моде,и прицепить файлы вершинного и фрагментного шейдеров.а потом в этих файлах добывать всё что тебе надо.в майне уже есть шейдеры,только они на json , типа демонстрация возможностей(лагучие).

P.S. Можешь в двух словах объяснить, чем твой код принципиально отличается от моего, написанного выше, и что я делаю не так? Не тот евент?
 
Это, шейдеры ввели ещё в 2001. Прошло 15 лет, до сих пор костылями пользуются. Что ж там такого страшного, в шейдерах?!
 
А то, что год назад я не знал, что такое Java :D
Чтобы разобраться в шейдерах, придётся ещё пару месяцев потратить.

Или есть какие-нибудь книжечки для чайников: "Как написать шейдер для Майнкрафта"?
 
Шейдер и в Африке шейдер. В майне он НИЧЕМ не отличается от обычного.
 
Liahim написал(а):
По мне, так просто куча небольших плоскостей... Как описал Oldestkon. Это и невооружённый взглядом видно.
А на счёт ссылки, которую дал Хирург в сообщении 21 и вообще относительно всего этого действа, его нужно пихать в тот же Фог эвент? Или каким-то иным макаром подцеплять?
Или вообще не важно, и подойдёт любой эвент, срабатывающий каждый тик?

Просто, чтобы начать щупать OpenGL, нужно, чтобы результат где-то отражался ))) Иначе, я вряд ли что-то пойму (
Нутк можешь с lwgl3 поиграться.
Вот ещё книжки если что :| :
https://yadi.sk/i/NyQuh5NlsHSYd
https://yadi.sk/i/y9WL2m-osHSbe
https://yadi.sk/i/GN9ZiWOwsHSdN
 
Просто,перед началом работы с шейдерами,нужно понять,что ты работаешь не с майнкрафтом а с окном в котором "рисуется" майнкрафт.
 
ну что у тебя там? эклипс\idea?через них и работаешь.
в твоей среде разработки уже всё подключено-lwjgl , openGL,forge  и т.д.
единственное,тебе придется обновить драйвера видеокарты и openGL.
http://vbomesh.blogspot.com
http://gmakers.ru/wiki/index.php?title=Туториал_по_шейдерам
Для работы с OpenGL 3.3.0+ тебе придется изучить технологию VBO.а потом к этому вбо цеплять шейдер.
короче по этой теме wilah 'a тряси или фолкена.я точно многого объяснить не с могу.
[merge_posts_bbcode]Добавлено: 06.06.2016 13:20:19[/merge_posts_bbcode]

Ну можно и без VBO если только на экран шейдер.тогда FBO.
В твоем случае я нарисовал схему.но лучше скейлить это всё.
 
Хм, ВБО и ВАО доступны с 3.0. 
Они тебе и понадобятся для рендера вкусняшек ^^
FBO для пост-эффектов, которые, думаю, тебе не нужны
 
Народ, я, конечно сильно извиняюсь, но я не понимаю...
Я скопировал код Хирурга...
XuPuPG написал(а):
Ладно,что бы подредактировать туман,тебе надо сделать так:
Код:
private val buffer = BufferUtils.createFloatBuffer(16)

@SubscribeEvent
fun onRenderFogEvent(e: EntityViewRenderEvent.RenderFogEvent) {

    GL11.glFog(GL11.GL_FOG_COLOR, createBuffer(0.0F, 20.0F, 0.0F, 1.0F)) //Цвет
    GL11.glFogf(GL11.GL_FOG_START, 0.0F)     //начало тумана от игрока
    GL11.glFogf(GL11.GL_FOG_END, 10f)       //конец,в данном случае - 10 блоков

}


private fun createBuffer(var1: Float, var2: Float, var3: Float, var4: Float): FloatBuffer {
    buffer.clear()
    buffer.put(var1).put(var2).put(var3).put(var4)
    buffer.flip()
    return buffer
}
В эклипс... Вот так:
Код:
private FloatBuffer buffer = BufferUtils.createFloatBuffer(16);

@SubscribeEvent
void onRenderFogEvent(EntityViewRenderEvent.RenderFogEvent e) {

    GL11.glFog(GL11.GL_FOG_COLOR, createBuffer(0.0F, 20.0F, 0.0F, 1.0F)); //Цвет
    GL11.glFogf(GL11.GL_FOG_START, 0.0F);     //начало тумана от игрока
    GL11.glFogf(GL11.GL_FOG_END, 10f);       //конец,в данном случае - 10 блоков

}


private FloatBuffer createBuffer(Float var1, Float var2, Float var3, Float var4) {
    buffer.clear();
    buffer.put(var1).put(var2).put(var3).put(var4);
    buffer.flip();
    return buffer;
}
По принципу:
XuPuPG написал(а):
ну что у тебя там? эклипс\idea?через них и работаешь.
в твоей среде разработки уже всё подключено-lwjgl , openGL,forge  и т.д.
единственное,тебе придется обновить драйвера видеокарты и openGL.
http://vbomesh.blogspot.com
http://gmakers.ru/wiki/index.php?title=Туториал_по_шейдерам
Для работы с OpenGL 3.3.0+ тебе придется изучить технологию VBO.а потом к этому вбо цеплять шейдер.
короче по этой теме wilah 'a тряси или фолкена.я точно многого объяснить не с могу.
Но он не фурычит.
Это потому, что я не обновил OpenGL? Или всё же нужно не через эклипс работать?
Если да, то каким образом обновлять OpenGL? У меня, как бы, всё это ставилось не в 2009... Не думаю, что версия какая-то старая.
 
А ты проверял, метод рендера вызывается хоть?
 
Что уж поделать, когда руки не оттуда 
¯\_(ツ)_/¯
 
svk2140, ты был прав, эвент не срабатывает.
Строка:  
Код:
System.out.println(1);
не выполняется...
Но, например, завершение эвента срабатывает... Что ж не так-то?
Зарегил правильно, так как FogDensity работает нормально.
[merge_posts_bbcode]Добавлено: 08.06.2016 00:50:27[/merge_posts_bbcode]

Может быть, я вообще сейчас не там занимаюсь?
Мне же, как я понял, без шейдеров не обойтись...
Просто пытаюсь понять, где мне писать сам шейдер и как его потом цеплять к МК.
 
Не, серьёзно... Это беда в эвенте или в руках?
Так регистрирую:
Код:
public class ClientProxy extends CommonProxy
{
    public void preInit(FMLPreInitializationEvent event)
    {        
        FogEvent sEvent = new FogEvent();
        MinecraftForge.EVENT_BUS.register(sEvent);
        FMLCommonHandler.instance().bus().register(sEvent);
    }
}

Сам эвент описан в сообщении №52...
Хееееееееелп!
 
Назад
Сверху