matklad / raytracer Goto Github PK
View Code? Open in Web Editor NEWA ray tracer written in Haskell
License: MIT License
A ray tracer written in Haskell
License: MIT License
Добавление цветов и операций с ними на подобии векторов.
Нормализация цветов.
Параметры камеры:
Параметры экрана:
Функция получения луча из заданной точки экрана
Модуль работы с векторами. Все стандартные операции:
==, /=, +, -, *, /, &, %, normal, length
(/, * - покомпонентные операции)
Лучи: пара векторов (начало, направление)
Получение точки луча на указанном расстоянии
Добавление источников света в сцену.
Добавление расчета освещенности объекта в сцену, основываясь на параметрах материалов объектов.
Надо побить на модули исходя из логики мира =)
Я вижу следующие компоненты:
Ещё, Colour должен импортировать не Vec, а Vec.Internal
Я сейчас всё это вижу примерно так:
/bin
Ray.hs
/src
Data/
Vec.Internal.hs (dec vec?)
Vec.hs
Colour.hs
Graphics/
Data/
Shape/
Triangle.hs
Sphere.hs
Shape.hs (пусть этот тип экспортирует и конкретные шейпы?)
Material.hs
Scene.hs (камера тут же -- по отдельности они не оч нужны)
Tracer.hs (Хорошо бы разбить и это, но, с другой стороны, не хорошо)
Text/
Obj.hs
Mtl.hs
Загрузка моделей OBJ/3DS в сцену в виде набора треугольников.
Создание базы материалов (лучше честно своровать)
Параметры материалов (все кроме последнего - цвета, Phong - Double)
Загрузка процедурных и растровых структур, назначение текстур объектам.
Хорошо бы знать, какие фичи мы хотим от трейсера и в каком порядке их реализовывать. Можно ещё для фичей создать список литературы, где можно прочитать, как её реализовывать.
Добавление точечных, направленных и протяженных источников света.
Параметры:
Функция определения влияния данного источника на освещение точки (double).
Объекты:
Функции работы с объектами:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.