anton.petrov (antimohnopuz) wrote,
anton.petrov
antimohnopuz

Category:

Ray Tracing #1

17 июня.

Всю жизнь мечтал и наконец-то решился на правах хобби реализовать самый лучший в мире трассировщик лучей 8) конечно же будет все и global illumination, и motion blur, и sub surface scattering и шерсть. На подсознательном уровне маячит задача "сделать" Pixar (http://www.pixar.com). Бюджета нету (т.к. хобби) время неограниченно - все в моих руках.

Вчера накалякал основные библиотечные математические и не очень классы, чтобы потом ни о чем не думать: vector, matrix, quaternion, color. Все вычисления в числах с плавающей точкой в инлайне для скорости. Цвет тоже { float r, g, b }, чтобы можно потом с буффером кадра делать различные вкусности вроде exposure. Вообще, хочу в основу положить меньше аппроксимаций и больше реальной физики, чтобы все было честно, включая HDR.
Даешь фотореализмъ!!!

За основу взял архитектуру пиксаровского RenderMan. Т.е. все описывается шейдерами, включая источники света, поверхности, атмосферные (объемные) эффекты, displacement и наложение в буфер кадра. По идее все источники света должны быть area lights, но сразу это слишком круто, поэтому пока взял идеальные: точечный и направленный.

Реализовал стандартные шейдеры для материалов: константный, диффузный, метал, пластик. Т.е. прямо по пиксаровской спецификации, но в классах на С++. Пока ни каких парсеров.

Из геометрии реализовал только сферу, т.к. проще всего :)

Еще реализовал шейдер для Whitted рендеринга, т.е. учитывается амбиент, диффузный свет, спекуляр, а также прямое отражение и преломление. С преломлением пока не все гладко, а отражение работают как надо. Получил приятную для глаза и души картинку.

Неплохой результат для двух дней работы.

з.ы. экзамены побоку, первые успехи радует немеряно.

Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 18 comments