LINUX.ORG.RU

Тип освещения - «ступени» или «окружность»?


0

1

Собственно, если кто помнит, не так давно обсуждали мою быдлокодистость в процессе создания игрульки. Я немножко подрихтовал «движок», теперь могу применять эффекты после вывода на экран. Другими словами, могу изменить тип освещения (кто там спрашивал, почему освещение «квадратиками»?). Так вот. Не могу решить, какую систему освещения взять - старую, поддерживающую законы физики, или новую, просто красивой (по сути - консоль или гуй со стеклышками :)).

Изображение: http://img97.imageshack.us/img97/4551/003gu.png

Что скажете, господа натуралисты?

P.S. Если что, я не против, если в толксы перенесут.

Для тех, кто не понял, почему новая система не поддерживает физику материи - старая просчитывала яркость блока по такой схеме - циклом проходила по всем блокам от источника до конечного и суммировала плотность материала, после чего вычисляла яркость для конечного блока. Хорошо видно на изображении выше - столбик освещен, через воздух свет пошел дальше.

Это не тени, а говно.

thesis ★★★★★
()

Предполагаю, что я бы сделал так:

свет считается честно (как справа), но 4 раза для каждого блока (4 четверти), потом размазывается (шейдером, например).

note173 ★★★★★
()
Ответ на: комментарий от note173

Но я все равно не понял, как свет вообще проходит через кирпич, или, иначе, зачем учитывать его плотность.

note173 ★★★★★
()
Ответ на: комментарий от note173

>как свет вообще проходит через кирпич

Надо для игрока. В террарии так-же, никто не жалуется. Кстати, там и освещение ступеньками.

legolegs ★★★★★
()
Ответ на: комментарий от note173

В принципе можно и для каждого пикселя просчитать значение маски. Вопрос в скорости. Попробую засечь время (около ~5 600 000 действий).

AlexCones ★★★
() автор топика

Что-то я не понял: а что, «родным» openGL'овским освещением разве не проще воспользоваться?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от o4kapuk

Скорее всего, пока не определился. Либо под апачем, либо под GPL.

AlexCones ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Дело в том, что ради пользователя - чтобы ему не тянуть «зависимости» как для оффтопа так и для линукса, я решил сделать все «на своих двоих». Разницу вы почувствуете только в размере исполняемого файла (25 кб) и в отсутствии заивисимостей.

AlexCones ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Почему примитивная? То, что я не использую готовые решения не означает, что графика примитивна. В движке я запилил достаточно визуальных эффектов, чтобы сделать 70% возможностей GIMP`а (это я не хвастаюсь, а просто описываю то, что есть). Текстуры генерируются динамически, так что в принципе это смесь Terraria и kkrieger (и пусть бросит в меня камень тот, кто скажет, что в этих играх примитивная графика).

AlexCones ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Оптимизировал код и не тормозит. 15% загрузка процессора на старой модели рисования, сейчас прикручиваю новую с парой асм-вставок, ожидаемая загрузка - 5-10%, притом, что отрисовывается вся картинка 20 раз в секунду и все окружение - динамическое. Вспомните полноценные игры, которые жрут меньше.

Просто существует устоявшееся мнение, что, мол, все надо перекидывать на GPU, мол, процессор слишком слабый и не оптимизированный для графики. Но никто не обращает внимание на то, что можно обойтись без GPU, рассматривая текстуры и все остальное не как графические элементы, а как набор данных и чисел, для операции над которыми CPU прекрасно оптимизирован. Да и существенно понизить нагрузку можно просто банально оптимизировав код, а не просто «набросав на формочку кнопок». Ту же отрисовку динамических текстур можно не делать в цикле, а закешировав ту часть, которая пока «стабильна» и трогать буфер только тогда, когда меняется очередной блок. Причем не перерисовывать весь буфер, а просто «прокрутив» в нем дырку на месте блока и зарисовав её новой текстурой. Только эта примитивная оптимизация уже дает -50, -60% загрузки CPU.

AlexCones ★★★
() автор топика
Ответ на: комментарий от devl547

Можете считать, что у меня minecraft2D. Просто все игры жанра «sandbox» выглядят практически одинаково. Все программисты, которые сталкиваются в таких играх с проблемой освещения решают её со стороны самого простого решения - задавать степень освещения отдельно каждому блоку. У меня появилась возможность сделать «красивше», поэтому, собственно, возник такой топик.

AlexCones ★★★
() автор топика
Ответ на: комментарий от devl547

И да, в майнкрафт я не играл - максимум - смотрел скриншоты. Зашел на их сайт, чтобы бесплатно поиграть - все, что мне выдало - «для выхода нажмите CTRL+B». В общем ниасилил запуск.

AlexCones ★★★
() автор топика

Если бы у тебя был OpenGL, можно было тень накладывать, задавая цветом в углах уровни освещённости, просчитанные твоим движком, а opengl сам бы сгладил разницу градиентиками.

unC0Rr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.