GithubHelp home page GithubHelp logo

raytracer's People

Contributors

matklad avatar superbobry avatar zmactep avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

raytracer's Issues

Цвета

Добавление цветов и операций с ними на подобии векторов.

Нормализация цветов.

Камера и экран

Параметры камеры:

  • расположение камеры.
  • вектор направления камеры (или точка, куда смотрит камера - OpenGL-style)

Параметры экрана:

  • размеры экрана
  • разрешение экрана
  • вектор вертикального направления экрана
  • вектор горизонтального направления экрана

Функция получения луча из заданной точки экрана

Вектор, Луч

Модуль работы с векторами. Все стандартные операции:
==, /=, +, -, *, /, &, %, normal, length

(/, * - покомпонентные операции)

Лучи: пара векторов (начало, направление)
Получение точки луча на указанном расстоянии

Освещенность объектов

Добавление источников света в сцену.
Добавление расчета освещенности объекта в сцену, основываясь на параметрах материалов объектов.

разбиение на модули

Надо побить на модули исходя из логики мира =)

Я вижу следующие компоненты:

  • независимый от трейсинга линал: Vec, Ray, Colour
  • data трейсинга:
  • shapeы
  • camera & scene
  • material
  • Матан трейсинга(Tracer.hs)
  • Парсинги всего на свете

Ещё, 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

Сцена

  • добавление камеры
  • добавление объектов
  • определение пересечения луча из каждой точки экрана с объектом и вывод его цвета

Материалы

Создание базы материалов (лучше честно своровать)

Параметры материалов (все кроме последнего - цвета, Phong - Double)

  • Ambient
  • Diffuse
  • Specular
  • Transaction
  • Reflection
  • Transmission
  • Phong coeff

Текстурирование

Загрузка процедурных и растровых структур, назначение текстур объектам.

Roadmap и feature list

Хорошо бы знать, какие фичи мы хотим от трейсера и в каком порядке их реализовывать. Можно ещё для фичей создать список литературы, где можно прочитать, как её реализовывать.

Источники света

Добавление точечных, направленных и протяженных источников света.

Параметры:

  • Расположение
  • Направление и коэффициент конусовидности (только для 2)
  • Вектор протяжения и длина (только для 3)
  • Цвет

Функция определения влияния данного источника на освещение точки (double).

Объекты

Объекты:

  • сфера (центр, радиус)
  • плоскость (точка, нормаль)
  • треугольник (3 точки)

Функции работы с объектами:

  • получение нормали в точке
  • получение точки пересечения луча с объектом
  • получение цвета объекта в точке

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.