- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
namespace raytracing
{
struct Scene::Implementation
{
std::vector<std::unique_ptr<RenderObject>> renderObjects;
std::vector<Light> lights;
Camera camera;
};
}
Scene::Scene() :
implementation{std::make_unique<Implementation>()}
{
}
void Scene::insertObject(RenderObject* renderObject) noexcept
{
implementation->renderObjects.push_back(std::unique_ptr<RenderObject>{renderObject});
}
const RenderObject* Scene::getIntersectedObject(Ray ray, vec3f* intersectionPoint) const noexcept
{
const auto& renderObjects = implementation->renderObjects;
if (renderObjects.empty())
return nullptr;
struct IntersectionData
{
const RenderObject* renderObject;
float t;
bool isIntersect;
vec3f intersectionPoint;
} temp{};
for (decltype(implementation->renderObjects)::const_iterator iter = renderObjects.cbegin();
iter != renderObjects.cend(); ++iter)
{
IntersectionData intersectionData;
intersectionData.renderObject = (*iter).get();
intersectionData.isIntersect = (*iter)->isIntersect(ray, intersectionData.t,
&intersectionData.intersectionPoint);
if (intersectionData.isIntersect)
{
if (temp.isIntersect)
{
if (temp.t > intersectionData.t)
temp = intersectionData;
}
else
temp = intersectionData;
}
}
if (intersectionPoint)
*intersectionPoint = temp.intersectionPoint;
return temp.renderObject;
}
namespace raytracing
{
struct Renderer::Implementation
{
vec3f trace(const Scene& scene, Ray ray) const noexcept
{
vec3f intersectionPoint;
const RenderObject* const renderObject = scene.getIntersectedObject(ray, &intersectionPoint);
vec3f color{};
if (!renderObject)
return color;
for (Light l : scene.getLights())
{
const Ray lightRay{intersectionPoint, (l.position - intersectionPoint).normalize()};
float brightness = renderObject->getNormal(intersectionPoint).dot(lightRay.direction);
if (brightness < 0.0F)
brightness = 0.0F;
color += renderObject->getColor(intersectionPoint) * 255.0F * brightness;
}
return color;
}
}
}
bot 18.04.2016 21:06 # 0
guest 19.04.2016 09:48 # 0
guest 18.04.2016 23:01 # +2
guest 18.04.2016 23:02 # +4
guest 19.04.2016 09:48 # +3
guest 19.04.2016 18:22 # +3
guest 19.04.2016 21:22 # +1
bormand 19.04.2016 21:24 # +3
kurwa 19.04.2016 21:29 # +5
bormand 19.04.2016 21:34 # +4
kegdan 19.04.2016 22:21 # +2
bormand 19.04.2016 22:52 # +4
Но зато осталось прожить на 1 день меньше. Надо во всём видеть положительные стороны.
kegdan 19.04.2016 23:45 # +1
guesto 19.04.2016 23:47 # +1
что в твоей жизни такого уж хорошего?
bormand 20.04.2016 00:06 # +1
З.Ы. Скоро у роскомнадзора будет ещё один повод забанить ГК.
guesto 20.04.2016 00:07 # 0
вот он и депрессует
bormand 20.04.2016 00:08 # 0
guesto 20.04.2016 00:11 # 0
а то ведь если круг общения ограничен ГК, то шанс найти кого-нить не много
Разве что с немцем местным подружиться
bormand 20.04.2016 00:29 # +1
Зачем?
kegdan 20.04.2016 00:31 # 0
Хожу, играю в настолочки, песни пою под гитару
Просто рассказ, который я пишу, не клеится, поэтом у и день проебан
kerman 20.04.2016 00:43 # 0
kegdan 20.04.2016 00:51 # +4
kerman 20.04.2016 01:10 # 0
bormand 20.04.2016 07:07 # +1
> негр
Хуже - анимешник.
guesto 20.04.2016 13:21 # +1
и уши лисьи у тебя есть?
kegdan 20.04.2016 13:27 # +1
guesto 20.04.2016 13:48 # +4
3.14159265 20.04.2016 15:01 # +2
fajes_rown 22.04.2016 19:04 # +3
kegdan 22.04.2016 19:27 # 0
3_14dar 22.04.2016 19:41 # +1
1024-- 22.04.2016 19:50 # +3
Чтобы испить традиционного английского чайку, надо почитать томик Шекспира.
Чтобы прочувствовать атмосферу ГК, надо посмотреть фильм про слоника.
3.14159265 22.04.2016 19:56 # 0
ааа! эх, что же за дебил, бля, в тарелку с головы пахома под зад.) иди мойся, нахуй тогда спать. я… я ложусь тоже, сейчас лягу… я тебя сейчас я вмпомню, сейчас могу пизды дать, тебе, братишка! бляяя, заебаал, блядь!.. они спят, сука, блядь… ну чё ты… оторвалася!.. я не срао сегодня вообще!
уйди нахуй, мне не надо, ну не надо поспать, полежать немножка, братишка. ну что ты сердишься, покушать-то!.. мух убить что ли? чисти! блядь, висти. козлов этих, ёбаных, блядь!
guest 23.04.2016 17:11 # 0
Поешь сладково хлебушка
nihau 20.04.2016 16:00 # +1
Vasiliy 20.04.2016 16:37 # −1
3_14dar 20.04.2016 19:53 # −3
3.14159265 20.04.2016 20:28 # +7
Кстати а зачем ты на пидара отзываешься?
Vasiliy 20.04.2016 20:39 # −4
1. Имя у него такое.
2. состояние души
3. состояние жопы.
3_14dar 20.04.2016 20:48 # −4
1024-- 20.04.2016 21:10 # 0
Дамы и господа, два поезда. Кто больше?
Два поезда раз, два поезда два, два поезда три.
Продано пидару с синим ником.
3.14159265 20.04.2016 21:20 # +1
Необходимо из этих двух поездов смоделировать поезд с таким же размером, но с дополнительным свойством -\
вход заполненного поезда вызывает затирание последнего пасажира.
где N=3.
Время пошло. Язык программирования любой
kegdan 20.04.2016 21:28 # 0
последний пассажир просто понимает, что поезд едет в жопу и выпрыгивает в окно
guesto 20.04.2016 22:13 # +4
на какой сам сядешь, на какой мать посадишь?
3_14dar 21.04.2016 19:10 # −1
bormand 21.04.2016 19:13 # +1
3_14dar 21.04.2016 19:21 # −3
bormand 21.04.2016 19:23 # +1
Ну написал же: Можно вставлять в голову, тогда выйдет с хвоста (аля очередь). А можно вставлять в хвост и доставать оттуда же (аля стек).
https://ru.wikipedia.org/wiki/Двухсторонняя_очередь
3_14dar 21.04.2016 19:31 # 0
bormand 21.04.2016 19:37 # 0
Не упомянул про то, что из головы тоже можно доставать? Ну ок, подловил.
Хотя у дека на односвязном списке и правда из головы нельзя доставать (или в хвост нельзя вставлять, в зависимости от реализации).
3_14dar 21.04.2016 19:41 # 0
>Хотя у дека на односвязном списке и правда из головы нельзя доставать (или в хвост нельзя вставлять, в зависимости от реализации).
Так это не совсем дек будет? Таки обязан или нет?
Кстати слышал что реальные связные списки практически не применяются ибо массивы или гибриды эффективнее даже на типикал юзкейсах для связных списков.
bormand 21.04.2016 19:53 # 0
Да хуй его знает. Честно. На английской вики эти варианты, кстати описаны.
> реальные связные списки практически не применяются
В прикладнухе - скорее да, чем нет. А вот в системщине довольно часто вшивают next/prev от кольцевого списка прямо в структуру с данными. Довольно удобно, когда доступ по индексу не нужен.
guest 22.04.2016 02:14 # +2
пидар ниграмотный
kegdan 20.04.2016 08:55 # 0
bormand 20.04.2016 21:39 # 0
Не сотвори себе кумира.
kegdan 20.04.2016 21:41 # 0
bormand 21.04.2016 19:15 # +1
Борманд покраснел, прокричал "Бака, бака!", и убежал в закат.
kegdan 21.04.2016 19:21 # 0
bormand 20.04.2016 00:54 # +2
Присоединяйся, у нас есть печеньки.
kegdan 20.04.2016 01:24 # 0
kegdan 20.04.2016 00:08 # +1
kerman 20.04.2016 00:45 # +1
Vasiliy 20.04.2016 11:30 # 0
guesto 19.04.2016 22:51 # +1
kurwa 18.04.2016 23:34 # +2
> push_back
Зато ты знаешь модерн сипласплас.
guest 19.04.2016 00:06 # +1
> &intersectionData.intersectionPoint);
вот тут intersectionData.t не инициализирован.
kerman 19.04.2016 01:25 # +1
guest 19.04.2016 01:28 # +2
kerman 19.04.2016 01:51 # 0
Antervis 19.04.2016 10:19 # 0
TarasB 19.04.2016 14:37 # 0
Antervis 19.04.2016 16:09 # −4
roman-kashitsyn 19.04.2016 17:05 # +3
Говорите за себя, сударь
TarasB 19.04.2016 20:01 # +3
Говорите за себя, сударь
bormand 19.04.2016 20:05 # +1
kegdan 22.04.2016 23:51 # 0
guest 23.04.2016 00:18 # 0
вот потому-то ты и не нужен
kegdan 23.04.2016 00:20 # +2
Никто мол больше не нужОн
Ни борманд, ни паскаль, ни я
Не пожалел он и себя
И вот бессильный слышен стон
"Гость тоже не нужОн..."
guest 23.04.2016 00:23 # 0
>>себя
очень хуевая рифма, кстати
теперь я точно убедился что ты не нужен
guest 22.04.2016 22:51 # 0
TarasB 19.04.2016 14:37 # +1
jangolare 19.04.2016 14:50 # 0
gost 21.04.2016 23:24 # 0
bormand 21.04.2016 23:28 # 0
gost 21.04.2016 23:43 # 0
Xom94ok 19.04.2016 22:13 # +1
Vindicar 20.04.2016 12:58 # +2
gost 21.04.2016 23:23 # +1