суббота, 31 мая 2014 г.

Прогресс моего движка Angie Engine

Renderer
2D Scene, Multipass 2D materials
2D Shape scene
Widget-style GUI
3D Scene
3D Shape scene
Deferred rendering
MVT - Multiunit Virtual Textures (Improved megatexture pipeline)
Point Lights
Per-pixel light emission and specular
Per-pixel precomputed AO and static shadows
Per-vertex material
SSAO
HDR Bloom
KD - Tree level structure (for static geometry)
Skinned mesh, instancing (for dynamic geometry)
Solid mesh (for static and dynamic geometry)

Entity physics
Havok

Временно отключены:
directional lights,
spot lights,
light shafts,
point light cube shadows,
DOF,
forward-rendered glass pass,
glass cube shadows,
shadows on glass,
sky box,
HDR eye adaptation,
air distortion


пятница, 22 ноября 2013 г.

Angie Engine Tech Demo: Point Light Soft Shadows


Тени от точечных источников света. Для каждого такого источника сцена рендерится в кубическую карту (cubemap), при этом рендерится только глубина. Далее путем сравнения глубины фрагментов с глубиной в полученной в cubemap-е строится черно-белое изображение тени. Данное изображение размывается ping-pong фильтром для получения мягкой тени. Далее полученные две текстуры смешиваются друг с другом по расстоянию от фрагмента до источника света.

понедельник, 4 ноября 2013 г.

Lost Lands Tech Demo: Rendering passes, SSAO, Eye adaptation

Не знаю, что написать, поэтому прикреплю только видео некоторого прогресса в моем движке)

Screen Space Ambient Occlusion


Rendering passes


Eye adaptation


пятница, 1 ноября 2013 г.

Lost Lands Tech Demo: Glass, Light Volumes

В данной демонстрации использованы 2 техники: deferred для непрозрачных объектов и forward для стекла. Стеклянный куб на видео рисуется в два прохода (лицевая и нелицевая грань). Все точечные источники освещения имеют свой радиус действия, т.о. рисуются только те источники, которые в данный момент попадают в пирамиду видимости (проверка попадания сферы). Каждый точечный источник освещения рисуется в виде AABB. Для большей оптимизации отрисовки прозрачных объектов планируется реализовать проверку пересечения объемов освещения с объемом прозрачного объекта.
Параметры прозрачных объектов (материал,свет,бамп и т.п) ничем не отличаются от непрозрачных объектов за исключением того, что они имеют параметр "прозрачность", принимающий значение от 0 до 1. Возможно в последующем будет иметь смысл дать возможность задавать прозрачность объекта попиксельно, т.е. в альфа канале текстуры.



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

Итак, точечный источник освещения (Point Light Source):
vec3 position
rgb ambient
rgb diffuse
rgb specular
vec3 attenuation
float radius
Помимо стандартного параметра затухания (attenuation) введен дополнительный параметр - радиус действия источника. Радиус действия источника - это то расстояние, за пределами которого вклад действия источника в освещение сцены равен нулю.

Направленный источник освещения (Directed Light Source):
vec3 position
rgb ambient
rgb diffuse
rgb specular
Направленный источник освещения отличается от точечного отсутствием затухания и радиуса действия. Свет от него также распространяется во все стороны.

Прожектор (Spot Light Source):
vec3 position
rgb ambient
rgb diffuse
rgb specular
vec3 attenuation
float radius
float exponent
vec2 direction (третья компонента получается из условия нормировки)
float сutoff

Материал:
rgb emission
rgb ambient
rgb diffuse
rgb specular
float shininess
Здесь все стандартно. Возможно, немного избыточно.

понедельник, 21 октября 2013 г.

Deferred shading, Per pixel lighting, Bump

Прогресс не стоит на месте и после долгих раздумий было решено использовать Deferred shading :)
В качестве примера представлен точечный источник света и попиксельное освещение с использованием карты нормалей.

Часть 1


Часть 2


Часть 3 - Несколько источников света



Пример эффекта, полученного только путем настройки параметров источника света и материала на том же шейдере.


суббота, 19 октября 2013 г.

Geometry + Point Light + HDR

В качестве меша геометрии для демонстрации был использован уровень из Quake3.
Освещение реализовано, через forward rendering