From d365ee19623ae8fa4380f8a8979c48fc61005cbf Mon Sep 17 00:00:00 2001 From: benkyd Date: Wed, 19 Oct 2022 22:51:20 +0100 Subject: [PATCH] HART BABYYY --- README.md | 18 +++++++++++++++++- ...n-logo-color-on-transparent-background.png | Bin 0 -> 51294 bytes src/main.c | 0 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 img/inferno-hart-high-resolution-logo-color-on-transparent-background.png create mode 100644 src/main.c diff --git a/README.md b/README.md index 87fdeac..d141c53 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ -# inferno-hart +![](img/inferno-hart-high-resolution-logo-color-on-transparent-background.png) + +Inferno HART (Hardware Accelerated RayTracing) will revolutionise the way we write application-specific raytracing applications with a clear and distinct abstraction between the core renderer, Inferno and the HART layer. + +Seperating Inferno and HART allows us to create first an ART (Accelerated RayTracing) layer which handles both the tracing and the BRDF, as well as the HART which can implement an accelerator for the tracing. Allowing for custom RayTracing silicon to be utilised WITHOUT changing the code code, nor the Global Illumination code. + +This combined with it's full functionality through Julia makes Inferno HART a very nice pathtracing engine. + +## Features + +## Technologies + +- OpenGL, utilised with GLAD and GLFW +- ImGui for lovely GUI +- SPDLog for lovely logging + +## Acknowledgements diff --git a/img/inferno-hart-high-resolution-logo-color-on-transparent-background.png b/img/inferno-hart-high-resolution-logo-color-on-transparent-background.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f1b0725e1229906d65dbdfff3aa26d32ba7380 GIT binary patch literal 51294 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 literal 0 HcmV?d00001 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e69de29