1
0
mirror of https://github.com/ssloy/tinyraytracer.git synced 2025-01-29 03:47:36 +01:00

Updated Home (markdown)

Dmitry V. Sokolov 2019-01-20 20:49:32 +01:00
parent 35e3789f9e
commit ab0c3db73e

17
Home.md

@ -216,20 +216,19 @@ And here is the result:
As promised, the code has 256 lines of code, <a href="https://github.com/ssloy/tinyraytracer">check it for yourself</a>!
<h1>Step 10: home assignment</h1>
Мы прошли довольно долгий путь: научились добавлять объекты в сцену, считать довольно сложное освещение. Давайте я оставлю два задания в качестве домашки. Абсолютно вся подготовительная работа уже сделана в ветке <a href="https://github.com/ssloy/tinyraytracer/tree/homework_assignment">homework_assignment</a>. Каждое задание потребует максимум десять строчек кода.
We've come a long way: we've learned how to add objects to a scene, how to compute rather complicated lighting. Let me leave you two assignments as homework. Absolutely all the preparatory work has already been done in the branch <a href="https://github.com/ssloy/tinyraytracer/tree/homework_assignment">homework_assignment</a>. Each assignment will require ten lines of code tops.
<h3>Задание первое: Environment map</h3>
На данный момент, если луч не пересекает сцену, то мы ему просто ставим постоянный цвет. А почему, собственно, постоянный? Давайте возьмём сферическую фотографию (файл <a href="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/envmap.jpg">envmap.jpg</a>) и используем её в качестве фона! Для облегчения жизни я слинковал наш проект с библиотекой stb для удобства работы со жпегами. Должен получиться вот такой рендер:
<h3>Assignment 1: environment map</h3>
At the moment, if the ray does not intersect any object, we just set the pixel to the constant background color. And why, actually, is it constant? Let's take a spherical photo (file <a href="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/envmap.jpg">envmap.jpg</a>) and use it as a background! To make life easier, I linked our project with the stb library for the convenience of working with the jpg format. It should give us such an image:
<img src="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/out-envmap.jpg"/>
<h3>Задание второе: кря!</h3>
Мы умеем рендерить и сферы, и плоскости (см. шахматную доску). Так давайте добавим отрисовку триангулированных моделей! Я написал код, позволяющий читать сетку треугольников, и добавил туда функцию пересечения луч-треугольник. Теперь добавить утёнка нашу сцену должно быть совсем тривиально!
<h3>Assignment 2: quack-quack!</h3>
We can render both spheres and planes (see the checkerboard). So let's draw triangle meshes! I've written a code that allows you to read an .obj file, and I've added a ray-triangle intersection function to it. Now adding the duck to our scene should be quite trivial:
<img src="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/out-envmap-duck.jpg"/>
<h1>Заключение</h1>
Моя основная задача - показать проекты, которые интересно (и легко!) программировать, очень надеюсь, что у меня это получается. Это очень важно, так как я убеждён, что программист должен писать много и со вкусом. Не знаю как вам, но лично меня бухучёт и сапёр, при вполне сравнимой сложности кода, не привлекают совсем.
Двести пятьдесят строчек рейтрейсинга реально написать за несколько часов. <a href="https://github.com/ssloy/tinyrenderer/wiki">Пятьсот строчек</a> софтверного растеризатора можно осилить за несколько дней. В следующий раз разберём по полочкам <a href="https://ru.wikipedia.org/wiki/Ray_casting">рейкастинг</a>, и заодно я покажу простейшие игры, которые пишут мои студенты-первокурсники в рамках обучения программированию на С++. Stay tuned!
<h1>Conclusion</h1>
My main goal is to show projects that are interesting (and easy!) to program. I am convinced that to become a good programmer one must do lots of side projects. I don't know about you, but I personally am not attracted to accounting software and the minesweeper game, even if the complexity of the code is quite comparable.
Few hours and two hundred and fifty lines of code give us a raytracer. <a href="https://github.com/ssloy/tinyrenderer/wiki">Five hundred lines</a> of the software rasterizer can be done in a few days. Graphics is really cool for learning the programming!