Лекция 6::Задача 1

Отражателна текстура

Да се реализира способност Reflection шейдъра да не отразява 100% от светлината, а отражението да се умножава по даден фиксиран цвят или текстура.
Ползвайте color и texture членовете на Shader. Логиката е подобна на Phong и Flat - ако texture члена не е NULL, да се вика getColor() метода на текстурата за текущия лъч и пресена точка; в противен случай да се ползва стойността на color члена. И в двата случая, получения цвят умножете по резултата от raytrace(). Създайте следната текстура (която ще ползвате за отражателна на сферата): лявата 1/3 от нея да е червена, останалото циан. Запазате тази текстура в .bmp формат в data/ директорията. Модифицирайте generateScene, като на Reflection шейдъра за сферата задайте да се ползва вашата текстура (създайте нов BitmapTexture обект с пътя към вашия файл, и го сложете в sphereShader-а). Понеже и отражателния слой на булевия обект също ползва reflection, ще се наложи да настроите и неговите параметри: за текстура ползвайте NULL, а за color - бяло. Резултатът трябва да прилича на този screenshot (тук е изключено glossy-то на сферата, с цел по-бързо рендериране - препоръчваме ви да го направите и вие).

ЕДИТ: текстурата, която съм ползвал в моя пример, можете да свалите оттук:
click.

Comments

А текстурът трябва ли да се

А текстурът трябва ли да се направи с gradient? Или плътно си отделяме червеното и cyan-а?

Както искате. Не е необходимо

Както искате. При мен има малко градиент по границата. Но това не е съществено - не е необходимо да ми пращате картинката, дал съм примера просто за да можете да проверите дали работи при вас.
Между другото, ако е съвсем презицен човек (т.е. на 300х300 картинка прекара ръба между двете области да е точно през х=100), ще се получи леко различен резултат... границата ще е повече към центъра на сферата. Т.е. не се хвърляйте в дребни детайли като този; просто ако докарате нещо, приличащо на дадения пример, значи сте го направили вярно - пращайте смело.

Ами питам защото на мене ми

Ами питам защото на мене ми се получи това и се чудя дали това се иска? Уж гледах условието всичко ми е точно, но не знам :(

Да, това е правилната

Да, това е правилната картинка при остър ръб.