Презентации 1—4 / 2013

На сайта са качени презентациите от лекции 1, 2, 3 и 4.

Към всяка лекция има два файла - PDF файл със презентацията (достатъчен за да видите какво се е говорило), както и ZIP файл, който съдържа презентацията в .ODP формат (ползван е LibreOffice Impress 4.1), сорс картинките във всички слайдове и евентуално други благинки.

  1. Лекция 1 - Увод (4.10.2013) - [PDF | ZIP]

    В .zip файла се намира видеото (order.m4v) и файловете на програмката "spliner", с която беше демонстрацията на скулптиране на винена чаша по време на лекцията. Има и скриптовете, които превръщат изходните данни в формата на POV-Ray (използван е POV-Ray 3.6, който трябва да си инсталирате за да можете да изрендите нещо). Ако ви е интересно, можете да пробвате да скулптирате собствена чаша!

  2. Лекция 2 - Цветови пространства (11.10.2013) - [PDF | ZIP]

    В .zip файла се намира програмката convoluter, с която беше HDR демонстрацията. Има няколко примерни филтъра и две картинки (в LDR и HDR формат, за сравнение). Тестовият HDR, който показахме на лекцията (ennis.exr) може да бъде свален от тук.

    И още нещо - направих примерна градиентна картинка, демонстрираща гама-компресията - вижте я тук. Идеята е, че долната половина на картинката е фин чекерборд от бели и черни пиксели, със средна стойност сиво. Ако се отдалечите от монитора си на 3-4 метра, тази половина ще ви се слее в един цвят, който всъщност е истинското "50% сиво". Забележете колко е по-светъл от средата на горния градиент, където се намира цветът (128, 128, 128)!. Можете да видите и къде приблизително в картинката двете половини са с еднакъв цвят. Истинското "50% сиво" ще е някъде около (192, 192, 192), но ще зависи от това дали ви е калибриран монитора и каква гама-декомпресия прилага.

  3. Лекция 3 - Въведение в raytracing-а (18.10.2013) - [PDF | ZIP].

    Тестовият код от лекцията се намира в github.

  4. Лекция 4 - Въведение в камерата. Пресичане с равнина. (25.10.2013) - [PDF | ZIP].

    Актуалният код от лекцията е качен в github.

  5. Както знаете, лекции 3 и 4 се записваха (screencap и звук). Все още не съм решил къде да ги хоствам (засега клоня към Vimeo). Ще пиша допълнително когато бъдат качени.

    В тази тема можете да питате още въпроси към лекциите, да посочвате бъгове и неясноти, и, разбира се, да обсъждаме материала.

Comments

Phong Reflection

Здравейте отново!

Имплементирах си Phong shader и искам да дадете мнения дали получените резултати изглеждат както трябва.
"Уговорка" - Всички резултати са постигнати при:
lightPower = 50000
lightColor = Color(1, 1, 1);
lightPos = Vector(-30, 100, 250);
(лилавата сфера е с Ламберт шейдър - няма нужда да я гледате, интересното е зелената сфера, която е с Phong)

Имам 2 варианта с по 3 картинки, като разликата в тях е промяна на стойността на една променлива от Phong шейдъра.
Вариант 1
img_1 - позицията на сферата е Vector(-20, 70, -50), а на камерата Vector(0, 165, -200)
img 2 - позицията на сферата е Vector(-20, 70, 250), а на камерата Vector(0, 165, 0)
img 3 - позицията на сферата е Vector(-20, 70, 300), а на камерата Vector(0, 165, 0)

Вариант 2
img_1 - позицията на сферата е Vector(-20, 70, -50), а на камерата Vector(0, 165, -200)
img_2 - позицията на сферата е Vector(-20, 70, 250), а на камерата Vector(0, 165, 0)
img_3 - позицията на сферата е Vector(-20, 70, 300), а на камерата Vector(0, 165, 0)

Първоначално резултатите на Вариант 1 изглеждат доста странно, но пак казвам като се има предвид това, че lightPower = 50000. Поиграх си да намаля тази стойност и докарах горе-долу еднакви резултати с Вариант 2.

Ето какво се получава при lightPower = 500 и Phong от вариант 1:
img - позицията на сферата е Vector(-20, 70, 250), а на камерата Vector(0, 165, 0)

Иначе, който иска може да погледне моята версия на имплементацията на шейдъра:
phong

С изключение на ambient е вярно

Изглежда вярно, само че ambient-а не зависи от разстоянието до лампата. То се взима да е константа, която се добавя към изчисленията простo. Иначе останалата част на Phong-а е коректна.

Видео

Качено е (най-после) и видеото към лекция 4.