Понедельник, 11 Ноября 2024, 06:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
OpenGL: свет и шейдеры
MrAkakuyДата: Четверг, 13 Июня 2013, 17:41 | Сообщение # 1
участник
Сейчас нет на сайте
Доброе утро/день/вечер уважаемые игроделы/программисты/посетившие этот сайт!

Изучая OpenGL, я наконец дошел до света и шейдеров wacko

Вообщем проблема такая:
У меня есть сцена, на ней вращающаяся текстурированная сфера, затекстуренный параллелограмм и комната без текстуры (сложенная из таких же параллелограммов ЭТО ВАЖНО!)

Для наглядности скрин:


Источник света у меня GL_LIGHT0 (код стандартный, показывать не вижу смысла).
Источник света точечный, затухание дефолтное.

Шейдер для затекстуренного объекта:


Шейдер для объекта без текстуры:


* В пикселных шейдерах lightMask нужен для того, чтобы осветлить изображение, так как при ambient и diffuse на максимальный цвет, изображение все равно слишком темное.

В предоставленном примере глобальное фоновое освещение (0.125, 0.125, 0.125, 1), ambient источника (0.25, 0.25, 0.25, 1), диффюз (1, 1, 1, 1).
Диффузный цвет материала - цвет объекта, ambient материала - произведение цвета объекта на глобальное фоновое освещение.

Для сферы и для куба (будем называть его так) все работает, как видите, прекрасно.
Источник света расположен под сферой.

По логике вещей, "пол" комнаты должен освещаться сильнее, чем "потолок". Однако, все наоборот. "Пол" вообще не освещен, освещается только потолок. Не подскажите, в чем проблема?

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

Пы.Пы.Сы.: за полезный ответ с меня 3 месяца плюсов happy

Пы.Пы.Пы.Сы.: OpenGL 2.0, рисую треугольниками, ВСЕ нормали установлены правильно.





Сообщение отредактировал MrAkakuy - Четверг, 13 Июня 2013, 17:48
ArchidoДата: Четверг, 13 Июня 2013, 18:10 | Сообщение # 2
Сэнсэй
Сейчас нет на сайте
Цитата (MrAkakuy)
Пы.Сы.: если кому не лень, не можете ли вы подсказать код шейдера, который позволяет делать освещение части полигона? У меня так: если на угол полигона светит источник света, то освещается весь полигон, не смотря на его размеры. А хочется, чтобы освещалась только та часть полигона, над которой свет.

Это потому, что освещение допотопное повертексное... Еще и на шейдерах, сильно однако. Гугли "glsl phong"


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
IzaronДата: Четверг, 13 Июня 2013, 18:10 | Сообщение # 3
Rammstein forever
Сейчас нет на сайте
Нормали абсолютно нормальные, обращены вовнутрь?
По идее, тогда должно работать все правильно wink
Цитата (MrAkakuy)
Пы.Сы.: если кому не лень, не можете ли вы подсказать код шейдера, который позволяет делать освещение части полигона? У меня так: если на угол полигона светит источник света, то освещается весь полигон, не смотря на его размеры. А хочется, чтобы освещалась только та часть полигона, над которой свет.

Гугли Specular lighting. Код предоставить не могу, т.к. работал только с дирек икс, вот по директу статья, вряд ли пригодится, но вот:
http://rastertek.com/dx11tut10.html
MrAkakuyДата: Четверг, 13 Июня 2013, 19:45 | Сообщение # 4
участник
Сейчас нет на сайте
Цитата (Archido)
освещение допотопное повертексное... Гугли "glsl phong"

Спасибо за ответ, буду искать biggrin
Цитата (Archido)
Еще и на шейдерах

На шейдерах, потому что не нравится мне как просчитывает свет OpenGL, да и потому что меня напрягает ограничение в 8 источников света и я планировал полностью перебраться на шейдерное освещение, а оттуда уже на OpenGL 3.3

Цитата (Izaron)
Гугли Specular lighting

Пробовал такое, не получилось. Руки ведь кривые.
Все равно спасибо за ответ.



  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг