Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.4.1...v0.4.2
Fixed noexcept edge cases for binary_tree
.
Updated installation guide to include C++17+ requirement.
Added C++17+ requirement to Installation.
Added table of contents to Examples for navigation.
Removed noexcept
from binary_tree
to avoid crashes on edge cases (e.g. tree.build(v.begin() - 1, v.end())
).
Added clear()
to build(Iterator begin, Iterator end)
in binary_tree
to avoid not clearing if begin >= end.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.4.0...v0.4.1
Small optimizations and edge case fixes.
Updated example in dimension3
and dimension4
for the enable_if_n_t
function to be more clear.
Added edge cases explanation to binary_tree.
Fixed edge cases surrounding Iterator begin, Iterator end
in binary_tree
, where if begin < end
it would crash.
Check for nullptr on callbacks and predicate in binary_tree
to avoid crashes.
Added pass by reference for all the callbacks in binary_tree
to avoid copying.
Changed static_cast<int>(color.(r/g/b/a)
to +color.(r/g/b/a)
in color
to avoid unnecessary casting.
Added tests for edge cases in binary_tree
.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.3.3...v0.4.0
The changes have backward compatibility issues, as the bounding_box()
virtual function has been added to the shape
.
Added sphere
to objects.h.
Added bounding_box
to objects.h.
Added bounding_box()
to shape.
Added binary_tree
class to algorithms.h.
Added bvh_tree
class to algorithms.h.
Removed sphere
from examples, it's now a bardrix object.
Added bounding_box
to Bardrix_Reference.
Added binary_tree
to Bardrix_Reference.
Added bvh_tree
to Bardrix_Reference.
Updated class diagrams associated with the new changes.
Added changes from examples that used sphere
to bardrix::sphere
in Raytracing.
Added bounding_box
class to objects.h.
Added bounding_box()
to shape.
Added binary_tree
class to algorithms.h.
Added bvh_tree
class to algorithms.h.
Added sphere
to objects.h.
Added ray(position : point3, end : point3)
to ray.
Updated material
default constructor to have a shininess of 1, which is the minimum value.
Added longest_axis()
and shortest_axis()
to bounding_box
.
Added enum class axis
to bardrix.h, where axis::none
is 0, axis::x
is 1, axis::y
is 2, axis::z
is 4 and axis::w
is 8.
Added operator[axis]
to dimension3
and dimension4
.
Added tests for bounding_box
and binary_tree
.
Added tests for ray(position : point3, end : point3)
.
Added tests for sphere
in objects.h.
Added tests for bvh_tree
in algorithms.h.
Added tests for longest_axis()
and shortest_axis()
in bounding_box
.
Added tests for operator[axis]
in dimension3
and dimension4
.
Fixed issue 42 where the pragma once
was missing in sphere.h
(wth?).
Fixed issue 43 where the +=
was incorrectly formatted in the reference.
Fixed issue 44 where the diagrams in the reference were incorrectly displayed.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.3.2...v0.3.3
Fixed the issues mentioned above.
Added close()
to window to close the window.
Added on_key_down(window, key)
to window to handle key presses.
Added camera movement to Raytracer example.
Added -=
, +=
to point3
with regards to vector3
.
Updated nuget targets file to include /Zc:__cplusplus
to add support for C++20.
Added <PrecompiledHeader>NotUsing</PrecompiledHeader>
to Bardio.Bardrix.targets
now you're able to use a pch.h (oops).
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.3.1...v0.3.2
Added -=
, +=
to point3
with regards to vector3
in Bardrix_Reference.
Added quaternion include to Raytracing Reflection.
Added -=
, +=
to point3
with regards to vector3
in point3.
Updated nuget targets file to include /Zc:__cplusplus
to add support for C++20.
Added tests for point3
-=
, +=
with regards to vector3
.
Added color blending to color
.
Added physics (conversion calculations + gravity calculations).
Solved issues 36
and 37.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.3.0...v0.3.1
Renamed a classes in Bardrix_Reference to be lowercase instead of uppercase.
Added color blending and physics to Bardrix_Reference.
Added #define NOMINMAX
to window.h to fix an issue with min
and max
being defined in windows.h
.
Updated the versions in examples (cmake).
Added color blending to color.
Added physics to physics.
Added tests for color blending.
Added tests for physics.
Major changes to the API have been made regarding material
and vector3::reflection
.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.2.3...v0.3.0
The changes have backward compatibility issues (compared to v0.2.x), only if you were using material
class
or vector3::reflection
.
Updated Bardrix_Reference
to include material
and vector3::reflection
updates.
Updated Mathematics
to include the correct vector3::reflection
formula.
Added readme to Docs/.
Added sphere normal calculation example
to Raytracing readme.
Added documentation to sphere class
in sphere example.
Made sure that in Release Notes the links are to the versions they are referring to instead of the latest version.
Added
documentation Raytracing-Reflections.
Solved issue 33, where degenerate cases aren't marked as such.
Updated shininess in material to
have a limit between [1, infinity)] which for some reason wasn't the case.
Updated diffuse and specular to not be opposites anymore because I thought they were, but they are not.
Updated vector3::reflection to now
actually work instead of returning the inverse of the reflection. Also reflection now doesn't return a unit vector but
instead a vector with the same length as the input vector.
Renamed protected variable bmi
(bitmap info) to bmi_
, back_buffer
to back_buffer_
and front_buffer
to
front_buffer_
in window example.
Added material
to sphere constructor
in sphere example.
Added tests for material
and vector3::reflection
to account for the new changes.
Renamed workflow template from Build Job
to Build And Test CMake
to better reflect what it does.
Documentation hotfix, wrong formula in example.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.2.2...v0.2.3
Solved issue 32,
where Mathematics didn't have a table of
contents.
Updated incorrect formula
in Raytracing example for
calculating the light intensity at a certain point.
Updated incorrect formula
in Raytracing example for
calculating the intersection point of a sphere.
Solved issue 32,
where Mathematics didn't have a table of
contents.
Updated incorrect formula
in Raytracing example for
calculating the light intensity at a certain point.
Updated incorrect formula
in Raytracing example for
calculating the intersection point of a sphere.
Added next step
to Introduction.
In the sphere intersection it has an error which means this version (for raytracing example) is unstable.
Very minor changes to documentation.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.2.1...v0.2.2
Solved issue 30, where in the README it doesn't properly link to the
github.
Updated table of contents
in Bardrix_Reference to include objects (
material/shape).
Updated README
in Examples/Raytracing, forgot to
finish a sentence and updated table of
contents; which now also properly links.
Updated Bardrix_Reference to include
objects (material/shape).
Updated README
in Examples/Raytracing, forgot to
finish a sentence and updated table of
contents; which now also properly links.
Updated name from light_sphere_example.png
to light_calculation_example.png
Updated 2.1 Light Sphere Intensity
to Light Intensity.
Solved issue 30, where in the README it doesn't properly link to the
github.
In the sphere intersection it has an error which means this version (for raytracing example) is unstable.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.2.0...v0.2.1
Added CONTRIBUTING.md to help contributors get
started with the project.
Added more documentation to the codebase to help contributors understand the codebase.
Added a workflow to test the examples, this will help pushing correct code to the repository.
Added inverse square law example
to Raytracing readme.
Added sphere light calculation example
to Raytracing readme.
Added objects (shape, material)
to Bardrix_Reference.
Added code and visual sphere intersection example
to Raytracing readme.
Updated raytracing example
and window.cpp now doesn't
give a compiler error when running on an operating system other than Windows, instead it prints out a message that it is
not supported.
Added Examples/CMakeLists.txt to
include all the examples in one build.
Renamed position
to position_
and made it protected
in sphere.
Added a generic workflow for building and testing on multiple platforms.
Added a workflow for testing if the examples compile.
Full Changelog: https://github.com/BardoBard/Bardrix/compare/v0.1.0...v0.2.0
The changes have backward compatibility issues (compared to v0.1.0), only if you were
using color::rgba()
, color::rgba(unsigned)
or color::color(unsigned)
.
Color now uses RRGGBBAA format instead of AABBGGRR format. This change was made to have a more consistent base color;
other colors will still be converted to this format and other formats.
window.h
when compiling in clang works fine, yet when running on cl (microsft compiler) it does not work. This is due
the encoding, which has now been fixed and updated
in window.h.
Updated Bardrix_Reference to
include argb()
and abgr()
in color.
Added parameters to the math functions
like degrees_to_radians
Bardrix_Reference
Updated class diagrams to include argb()
and abgr()
in color.
Updated Raytracing cpp to include
the new changes in color and center the screen.
Updated unsigned
to uint32_t in color to always have a 32 bit integer representation.
Updated color to now represent the correct layout (RRGGBBAA instead of the previous AABBGGRR) for 32 bit integer
representation. This change means that previously used rgba()
and rgba(rgba : unsigned)
should be altered to
use abgr()
instead.
Added argb()
and abgr()
to color (this will help with windows API which uses argb).
Fixed small compiler compatibility issues fixed in
Raytracer Example.
Added #include <cstdint>
to bardrix.h to include uint32_t
for color.
This release changes to the API have been made, this is due to the fact that width
and height
in camera
are
now int
instead of unsigned
. This is due to compatibility with other libraries that use int
for width and height.
now call get_width()
, get_height()
, set_width(int)
, set_height(int)
.
shoot_ray(unsigned, unsigned, double)
in camera
now takes in int
instead of unsigned
for x
and y
. For the
same reason width
and height
are now int
.
Added examples for simple raytracing.
Added examples to docs/ for a very simple demonstration of how to use Bardrix and raytracing.
Updated bardrix-math class diagram since in v0.0.5 it included reflect
and refract
instead of reflection
and refraction
.
Updated bardrix-view class diagram to accommodate the new changes in camera
.
Added release notes, this now gives more detail about the api changes happening in each release.
Added camera
to the Bardrix_Reference.
Updated width
and height
to be int
in camera. This is due to
compatibility
with other libraries that use int
for width and height. This changes does affect the api; due to the fact that now
you've got to call get_width()
, get_height()
, set_width(int)
, set_height(int)
.
Updated shoot_ray(unsigned, unsigned, double)
in camera to take in int
instead of unsigned
for x
and y
. This changes does affect the api; due to the fact that now you've got to
call shoot_ray(int, int, double)
.
Added default constructor
to camera with
position (0, 0, 0)
, direction
(0, 0, 1)
, width 800
, height 600
and fov 90
.
Added <<
operator to camera
to print out the camera's components.
Added bardrix::
prefix to all the functions and classes in objects.h
and camera.h
, sometimes there was an issue
with overriding; when using an external IDE like clion it would not copy with it the pre-fixes.
Added extra tests for camera
to test the new changes.
Removed a print line in vector3_test.cpp
that was not needed.
The changes have no backward compatibility issues, as the changes are new features and bug fixes.
Added Bardrix_Reference that contains all
the functions and classes in Bardrix.
Added Mathematics that contains mathematical
functions to learn about the mathematics used in
Bardrix.
Added Introduction that contains a brief
introduction to Bardrix.
Added examples to documentation comments all over the code.
Updated Conventions to
include Class Conventions
, Testing Conventions
, Documentation Conventions
and Commit Message Conventions
.
Added material to create materials for objects. Added abstract shape class to create shapes for objects; e.g sphere, plane, triangle, etc.
Added grayscale and invert to color.
Added refraction and reflection to vector3. Returning optional vector3.
Added !=
operator to ray, for some
reason this was missing.
Updated normalize from vector3
to now return a reference to the changed
vector3. void
-> vector3&
.
Updated normalize
from quaternion
to now return a reference to the changed
quaternion. void
-> quaternion&
.
Updated conjugate
from quaternion
to now return a reference to the changed
quaternion. void
-> quaternion&
.
Updated reciprocal
from quaternion
to now return a reference to the changed
quaternion. void
-> quaternion&
.