tag:blogger.com,1999:blog-3861946996744822885.post1660745419848610857..comments2022-04-02T03:37:24.980+02:00Comments on Блог Андрея Монахова: OpenGL ES 2.0. Урок 5. Шейдер преломления светаАндрей Монаховhttp://www.blogger.com/profile/08152067554056118336noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-3861946996744822885.post-41046041183137638272014-04-03T16:40:06.089+03:002014-04-03T16:40:06.089+03:00Пытался размывать тень отреендеринную в текстуру. ...Пытался размывать тень отреендеринную в текстуру. При ядре фильтра 6х6 фпс проседало в 3 раза, а чтоб хорошо размыть ядро нужно брать 64х64. Сделал так http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter17.html . Просело в 2 разаAnonymoushttps://www.blogger.com/profile/02806974205976019665noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-51024578792460917082014-04-03T16:36:37.884+03:002014-04-03T16:36:37.884+03:00Да и не понятно, что значит 1000 объектов. Обычно ...Да и не понятно, что значит 1000 объектов. Обычно мерят в трианглах. Anonymoushttps://www.blogger.com/profile/02806974205976019665noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-59291092080189473522014-04-03T16:35:20.907+03:002014-04-03T16:35:20.907+03:00Рендерить в фрэмбуффер, а во втором проходе постоб...Рендерить в фрэмбуффер, а во втором проходе постобработка. Но для хиленьких армовых гпу это суицид)))Anonymoushttps://www.blogger.com/profile/02806974205976019665noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-69184750013279853932014-04-03T16:31:07.537+03:002014-04-03T16:31:07.537+03:00ИМХО правильно передавать в шейдер отдельную матри...ИМХО правильно передавать в шейдер отдельную матрицу полученную путем транспонирования и обращения 3х3 подматрицы модельной матрицы с последующим домножением на нее нормали в шейдере.Anonymoushttps://www.blogger.com/profile/02806974205976019665noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-50613135999827953592014-04-03T16:22:46.351+03:002014-04-03T16:22:46.351+03:00Нативный код написанный с помощью NDK представляет...Нативный код написанный с помощью NDK представляет из себя скомпилированную динамическую библиотеку и никакого отношения к далвику не имеет. Anonymoushttps://www.blogger.com/profile/02806974205976019665noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-29004007952537673722014-03-13T22:55:33.358+03:002014-03-13T22:55:33.358+03:00Как я понимаю нужно поворачивать не только сам обь...Как я понимаю нужно поворачивать не только сам обьект, но и его нормали, тогда будет то что нужноAnonymoushttps://www.blogger.com/profile/17001982049945618373noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-18101097616954338772014-03-08T00:29:04.515+03:002014-03-08T00:29:04.515+03:00Здравствуйте! Подскажите пожалуйста, как повернуть...Здравствуйте! Подскажите пожалуйста, как повернуть объект так, чтобы от переместился относительно света? Когда я перемножаю modelMatrix на матрицу поворота объект поворачивается вместе со светом(блик на объекте движется вместе с ним). Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-37824237872822466362014-02-03T19:45:31.157+03:002014-02-03T19:45:31.157+03:00А в каком формате данные? Экспорт от куда то? Я уж...А в каком формате данные? Экспорт от куда то? Я уже реализовывал експорт из blender через obj форматAnonymoushttps://www.blogger.com/profile/17001982049945618373noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-50820486517080372622014-01-19T18:52:57.144+03:002014-01-19T18:52:57.144+03:00здравствуйте! я бы хотел узнать а как читать двоич...здравствуйте! я бы хотел узнать а как читать двоичные данные (к примеру 3д модель)Здравствуйте!<br />у меня проблема с чтением файлов (нигде не нашел инфу надежда на вас): <br />как в InputStream (он ссылается на файл ресурсов) считать двоичные даные к примеру float и т.п. в том числе смешанные (float int и т.п. в перемешку) <br /><br />пробывал так:<br /><br />InputStream inputStream = context.getResources().openRawResource(R.drawable.fruite); <br />DataInputStream dis = new DataInputStream(inputStream);<br />float as = dis.readFloat(); // но тут помечает красным<br /><br />Заранее благодарю!!Anonymoushttps://www.blogger.com/profile/15831405570973404148noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-12027316675807251842013-11-22T00:25:11.951+03:002013-11-22T00:25:11.951+03:00Кажется вопрос снят, разобрался. С Вычисленной тен...Кажется вопрос снят, разобрался. С Вычисленной тенью можно работать через FBO а первое делается через доп текстуру(Карту нормалей)Anonymoushttps://www.blogger.com/profile/17001982049945618373noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-36609558184450027302013-10-17T22:25:01.477+03:002013-10-17T22:25:01.477+03:00Добрый день, а планируются ли уроки по работе с те...Добрый день, а планируются ли уроки по работе с тенями?(Вычесленные тени, карта теней?)Anonymoushttps://www.blogger.com/profile/17001982049945618373noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-28740630459891476142013-08-11T01:54:09.873+03:002013-08-11T01:54:09.873+03:00Сделал по этому уроку http://habrahabr.ru/post/144...Сделал по этому уроку http://habrahabr.ru/post/144831/ только уменьшил текстуру до 128х128 и количество проходов с 44 до 16 производительность более-менее удовлетворяет и эффект более чем красивый, но всё-равно если есть более быстрая в плане производительности реализация было-бы очень интересно посмотреть!<br /><br />Спасибо!Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-76041437451868219412013-08-05T13:04:52.920+03:002013-08-05T13:04:52.920+03:00А если оригинальную картинку в FBO1 потом из этого...А если оригинальную картинку в FBO1 потом из этого FBO1 во второй FBO2 размыть и в итоге отрендерить mix(FBO1,FBO2,0.5)?<br /><br />P.S. И я слышал, что for в шейдере - смерть GPU! Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-87209682139821828012013-08-05T10:32:50.650+03:002013-08-05T10:32:50.650+03:00Как я понял из картинки нужно сначала сделать текс...Как я понял из картинки нужно сначала сделать текстуру размытой. Покопавшись в литературе, нашел такой прием. Сначала вычисляем исходные координаты текстуры, затем выполняем сдвиг координаты S на малую величину и читаем цвет пикселя из текстуры по новым координатам. Так повторяем несколько раз вокруг исходной координаты S. Складываем полученные цвета и делим на их количество(т.е. вычисляем средний цвет).<br /><br />vec3 sumcolor=vec3(0.0, 0.0, 0.0);<br />vec2 ds=vec2 (0.007, 0.0);<br />vec2 shift_s=texcoord-3.0*ds;<br />for (int i=0; i<7; i++){<br /> sumcolor+=texture2D(u_texture0, shift_s).rgb;<br /> shift_s+=ds;<br />}<br /><br />gl_FragColor=vec4(sumcolor/7.0, 1.0);<br /><br />Аналогично размываем полученный цвет по координате T.<br /><br />Размазывает картинку хорошо, но fps падает в несколько раз за счет большого количества обращений к текстуре. Буду думать дальше.<br />Андрей Монаховhttps://www.blogger.com/profile/08152067554056118336noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-64147974035832113872013-08-02T18:32:52.914+03:002013-08-02T18:32:52.914+03:00Извините, что надоедаю.
Вот про какой светящийся э...Извините, что надоедаю.<br />Вот про какой светящийся эффект я говорил http://s019.radikal.ru/i608/1308/47/16e036ddc6d9.jpg Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-16031883702214795062013-08-01T10:47:56.193+03:002013-08-01T10:47:56.193+03:00Вот-вот как ко всей отрендеренной сцене применить ...Вот-вот как ко всей отрендеренной сцене применить этот эффект без квада на весь экран?<br />Если применять сразу, то это будет не совсем, что нужно(у меня на сцене рендерятся 1000 объектов). Я честно не понимаю как применить пост-эффект к полностью отрендеренной сцене(а мне необходимо именно к полностью отрисованной сцене).Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-19090018619808003952013-08-01T05:20:03.435+03:002013-08-01T05:20:03.435+03:00Зачем для такого простого эффекта выделять светимо...Зачем для такого простого эффекта выделять светимость в отдельную текстуру ? Берете цвет пикселя оригинальной сцены и применяете формулы в шейдере. Андрей Монаховhttps://www.blogger.com/profile/08152067554056118336noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-49451366084159476622013-07-31T11:19:39.472+03:002013-07-31T11:19:39.472+03:00Спасибо за формулы, но у меня совсем дошкольный во...Спасибо за формулы, но у меня совсем дошкольный вопрос, как вообще наложить этот эффект на готовую сцену?<br />Мне представляется использование двух FBO(сцена со светимостью и оригинальная сцена), потом эти два FBO сводятся на КВАДЕ как две текстуры.Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-57077763776224207292013-07-31T10:23:56.617+03:002013-07-31T10:23:56.617+03:000.8 оказалось слишком маленькой величиной,т.к. мак...0.8 оказалось слишком маленькой величиной,т.к. максимальная длина вектора цвета =2. Кстати яркость можно считать по другому:<br />float bright=textureColor.r+textureColor.g+textureColor.b;<br />В этом случае максимальная величина яркости =3. Андрей Монаховhttps://www.blogger.com/profile/08152067554056118336noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-263009831475847412013-07-31T09:22:04.324+03:002013-07-31T09:22:04.324+03:00Попробуйте так:
извлекаем цвет пикселя из текстуры...Попробуйте так:<br />извлекаем цвет пикселя из текстуры:<br />vec4 textureColor=texture2D(u_texture0, texCoord);<br />получаем яркость цвета пикселя:<br />float bright=length(textureColor);<br />если яркость меньше 0.8, то новую яркость зануляем:<br />float bright_new=step(0.8,bright);<br />вычисляем новый цвет для новой яркости:<br />vec4 color_new=bright_new*textureColor;<br />складываем старый и новый цвета:<br />gl_FragColor=lightColor*(textureColor+color_new);<br />Вместо функции step можно использовать функцию smoothstep, т.е. плавное отсечение по яркости. Например так:<br />float bright_new=smoothstep(0.5,0.8,bright);<br />Андрей Монаховhttps://www.blogger.com/profile/08152067554056118336noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-90475718872513677162013-07-30T19:21:23.425+03:002013-07-30T19:21:23.425+03:00Здравствуйте, Андрей!
Подскажите пожалуйста как пр...Здравствуйте, Андрей!<br />Подскажите пожалуйста как прикрутить шейдер пост-обработки например BLOOM-эффект к вашему примеру?<br />Реализация самого BLOOM-эффекта к сожалению есть только на directx здесь -> http://habrahabr.ru/post/147799/ <br />Спасибо!Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-9230125158341507022013-07-30T19:04:04.204+03:002013-07-30T19:04:04.204+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/18091249584386546208noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-78002652666558907982013-07-18T08:53:33.430+03:002013-07-18T08:53:33.430+03:00Сравнение выполнения на С++ и на Java http://marak...Сравнение выполнения на С++ и на Java http://marakana.com/forums/android/examples/96.html, хотя конечно неизвестно одинаково ли проходят opengl вызовы... Да и вообщде насколько я знаю что, C++ код на NDK исполняется ВНЕ Dalvik. Может я ошибаюсь, укажите где написано обратное...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-12176897944954539072013-07-18T07:24:08.288+03:002013-07-18T07:24:08.288+03:00Уроки на NDK не планирую. Не вижу разницы на чем п...Уроки на NDK не планирую. Не вижу разницы на чем писать исходный код - на Java или C++, т.к. в обоих случаях при компиляции он будет преобразован в Dalvik-код. На скорость это никак не повлияет.Андрей Монаховhttps://www.blogger.com/profile/08152067554056118336noreply@blogger.comtag:blogger.com,1999:blog-3861946996744822885.post-8343292707896022002013-07-17T13:30:54.737+03:002013-07-17T13:30:54.737+03:00Извините, что не по теме, но как насчёт NDK, будут...Извините, что не по теме, но как насчёт NDK, будут ли уроки на OpenGL ES на NDK? Ведь насколько я знаю как правило на NDK на C/С++ работает быстрее чем на Java. Хотелось бы увидеть. Есть ли на NDK что-то подобное классу Matrix или же работу с матрицами придётся реализовывать самому?Anonymousnoreply@blogger.com