Retro coding in C/C++ in a 3D template with full low-level control.

Related tags

Containers WrldTmpl8
Overview

BRIEF INFO ON THE 2021 WORLD TEMPLATE

Project website: https://jacco.ompf2.com/voxel-world-template/

Purpose:

This template has been designed to make it easy to start coding C++ using games and 3D graphics. The world is 3D, but consists of a finite amount of 'voxels' (3D pixels): exactly 1024x1024x1024 are available to you. Programming games on this 3D 'screen' closely resembles how we created games on homecomputers - but without the now outdated 2D graphics. At the same time, the template is nothing like large engines, like Unity and Unreal. You get full control over your machine, and you are welcome to dive deep into the template code, to change it as you wish, once you are ready to do so.

Copyright

This code is completely free to use and distribute in any form.

Utrecht, 2015-2021, Utrecht University
Breda, 2014 and 2020-2021, NHTV/IGAD/BUAS
Jacco Bikker
Report problems and suggestions to [email protected].

Changelog

v2021-01: initial 3D template release.

ScreenShot

ScreenShot

You might also like...
P1031 low level file i/o and filesystem library for the C++ standard

This is the post-peer-review LLFIO v2 rewrite. You can view its documentation at https://ned14.github.io/llfio/ master branch develop branch CMake das

Portable header-only C++ low level SIMD library

libsimdpp libsimdpp is a portable header-only zero-overhead C++ low level SIMD library. The library presents a single interface over SIMD instruction

Writing our own printf function, this is a project done under ALX Low Level Programming.

0x11. C - printf Writing our own printf function, this is a project done under ALX Low Level Programming. Resource secrets of printf Implementing prin

A list of excellent resources for anyone to deepen their understanding with regards to Windows Kernel Exploitation and general low level security.

WinKernel-Resources A list of excellent resources for anyone trying to deepen their understanding with regards to Windows Kernel Exploitation and gene

A low level Operating System designed using Linux Kernel

Conqueror A low level Operating System designed using Linux Kernel To develop the basic low level operating system, we need following Virtual Machine

S2-LP driver library, low-level and easy-to-port

S2-LP Library This library provides a simple way to use S2-LP transciever module. This library is WIP, but mostly done. https://www.st.com/en/wireless

Low Level Bindings to Libev

Lev - OCaml bindings to libev Abstract libev by Marc Lehmann is a minimal & portable event loop library. Lev offers low level bindings to this library

A low-level, cross-platform GPU library

vgpu is cross-platform low-level GPU library. Features Support for Windows, Linux, macOS. Modern rendering using Vulkan and Direct3D12. Dependencies U

Low level library to develop GBA games that can also be built for PC.

Universal GBA Library 1. Introduction This is a library for development of GBA games. It can be used to build actual GBA game ROMs, but it can also ta

A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.
A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.

LruClockCache Low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. (see wiki for details) using MyKeyType = std::string; us

Volatile ELF payloads generator with Metasploit integrations for testing GNU/Linux ecosystems against low-level threats
Volatile ELF payloads generator with Metasploit integrations for testing GNU/Linux ecosystems against low-level threats

Revenant Intro This tool combines SCC runtime, rofi, Msfvenom, Ngrok and a dynamic template processor, offering an easy to use interface for compiling

Perf-ninja - This is an online course where you can learn and master the skill of low-level performance analysis and tuning.
Perf-ninja - This is an online course where you can learn and master the skill of low-level performance analysis and tuning.

Performance Ninja Class This is an online course where you can learn to find and fix low-level performance issues, for example CPU cache misses and br

Deno gl - WIP Low-level OpenGL (GLFW) bindings and WebGL API implementation for Deno.

deno_gl WIP Low-level OpenGL (GLFW) bindings and WebGL API implementation for Deno. Building Make dist directory if it doesn't exist. Build gl helper

Tiny - low-level library for minimizing the size of your types
Tiny - low-level library for minimizing the size of your types

foonathan/tiny Note: This project is currently WIP, no guarantees are made until an 0.1 release. This project is a C++11 library for putting every las

Boost::ASIO low-level redis client (connector)

bredis Boost::ASIO low-level redis client (connector), github gitee Features header only zero-copy (currently only for received replies from Redis) lo

Keystroke-level online anonymization kernel: obfuscates typing behavior at the device level.
Keystroke-level online anonymization kernel: obfuscates typing behavior at the device level.

Keystroke-level online anonymization kernel: obfuscates typing behavior at the device level.

An Arduino library to control 2-bit (4 gray level) LCD displays
An Arduino library to control 2-bit (4 gray level) LCD displays

TwoBitDisplay (2-bpp LCD library) Project started 10/23/2021 Copyright (c) 2021 BitBank Software, Inc. Written by Larry Bank [email protected] The pur

Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management
Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management

scroll down for English version and additional information wbec WLAN-Anbindung der Heidelberg WallBox Energy Control über ESP8266 Die Heidelberg W

Comments
  • incorrect commitSize ?

    incorrect commitSize ?

    World.cpp is defining static const uint commitSize = BRICKCOMMITSIZE / 4 + gridSize; Why the div by 4 ? I think this makes the commit buffer to small ? (commit buffer is commit in code, not commitBuffer (not used anymore?))

    I added some quick&dirty frame-sliced commits (only upload MAXCOMMITS each frame, remaining are done next frames) so I don't have to bump the MAXCOMMITS exponential.

    This however leads to a crash during StreamCopy (during World::Commit, dst pointer is not writable) and I believe this is due the buffer not allocated big enough to actually hold MAXCOMMITS bricks+Indices?

    Quickly inspecting it I wonder why this div by 4 is done. Not doing that div works but it could be just masking the symptoms ?

    opened by debaetsd 4
  • Explicit cast from address space

    Explicit cast from address space "global" to address space "private" is not allowed

    OpenCL compilation of trace.cl fails on the current master

    file cl/trace.cl, line 80, pos 35:
    Explicit cast from address space "global" to address space "private" is not allowed
    

    that points to line:

    if (p != lp) page = (PAYLOAD*)bricks[v / (CHUNKSIZE / PAYLOADSIZE)], lp = p;
    

    errorlog.txt

    My runtime:

    available OpenCL platforms:
    #0: NVIDIA CUDA
    OpenCL device: NVIDIA CUDA
    Device # 0, GeForce RTX 2070 (OpenCL 1.2 CUDA)
    Allocated 8MB on CPU and GPU for the top-level grid.
    Allocated 512MB on CPU and GPU for 1024k bricks.
    Allocated 32KB on CPU for bitfield.
    Allocated 4MB on CPU for brickInfo.
    
    opened by mackrol 2
  • Linux/cross-platform support

    Linux/cross-platform support

    I wanted very badly to try this, but it seems tied to windows and to some extent visual studio (which I can't justify installing, unfortunately). I tried to hack at it myself (and submit a PR) but noticed it is not just a matter of modifying some ifdefs, as some windows API code is used. The easy parts:

    • adding ifdefs around use of windows.h.
    • windows is case insensitive when looking for files, but it isn't the case on Unix based systems. #include <cl/cl.h> should be #include <CL/cl.h>.
    • would be nice to have a makefile, but the project is simple enough.
    • defining correct macros for glfw native, like GLFW_EXPOSE_NATIVE_X11, and using the appropriate context functions to pass ogl context to opencl.
    • This may be ignorance on my part, but I got a lot of errors about <cstring> functions being used without being defined. An include may be missing or I made a mistake when trying to build.

    There are some parts that would require actual work. The first I noticed is that windows API synchronization functions are used for jobs. An alternative would have to be provided if you intend to support other OSs.

    Either way, thanks for sharing, it is valuable for study even if I can't see it in action right away.

    opened by radgeRayden 1
Owner
Jacco Bikker
Assistent professor at Utrecht University, teaching Advanced Graphics and Optimization & Vectorization.
Jacco Bikker
Legion Low Level Rendering Interface provides a graphics API agnostic rendering interface with minimal CPU overhead and low level access to verbose GPU operations.

Legion-LLRI Legion-LLRI, or “Legion Low Level Rendering Interface” is a rendering API that aims to provide a graphics API agnostic approach to graphic

Rythe Interactive 26 Aug 13, 2022
High-level interface for low-level programming

Singeli Singeli is now able to compile useful programs to C, but it's very rough around the edges, with poor error reporting. We are beginning to use

Marshall Lochbaum 32 Sep 25, 2022
A water tank level sensor **Built With WisBlock** to detect overflow and low level conditions.

RAK12014 Laser TOF sensor coming soon WisBlock Watertank Level Sensor Watertank Overflow detection using the RAKwireless WisBlock modules. It implemen

Bernd Giesecke 3 Feb 3, 2022
This is a C plus plus coding template for Compitative programming. This template is very optimized for the Online Judgment

C-plusplus-compitative-Programming-Template Tech We Used C++ Features Easy to compile Easy debug facility Analysised and optimized base template Steps

Alan Binu 15 Jan 27, 2022
This repo contains solutions to coding questions available online on coding platforms like - Codeforces, Codechef, URI Online Judge, and Hackerrank.

CPP_Soln This repo contains solutions to coding questions available online on coding platforms like - Codeforces, Codechef, URI Online Judge , LeetCod

Rijul Jain 3 Nov 1, 2021
CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf

esp-idf-cc2500 CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf. I ported from this. 2.00mm pitch External Antena 1.27mm pitch PCB

null 3 May 29, 2022
Jinja2 C++ (and for C++) almost full-conformance template engine implementation

Jinja2С++ C++ implementation of the Jinja2 Python template engine. This library brings support of powerful Jinja2 template features into the C++ world

Jinja2C++ project 372 Sep 26, 2022
A modern cross-platform low-level graphics library and rendering framework

Diligent Engine A Modern Cross-Platform Low-Level 3D Graphics Library Diligent Engine is a lightweight cross-platform graphics API abstraction library

Diligent Graphics 2.5k Oct 3, 2022
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

Low Level Graphics Library (LLGL) Documentation NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accept

Lukas Hermanns 1.4k Oct 6, 2022
lunatic is an ARM (32-bit) dynamic recompiler for low-level emulators.

lunatic lunatic is an ARM (32-bit) dynamic recompiler for low-level emulators. At the moment this is alpha level software and is not ready for general

fleroviux 82 Sep 12, 2022