Theme Catppuccin
Make yourself at homeCatppuccin

A softer light for long learning sessions.

Appearance

Loading your preference…

Dark palette

Choose a dark palette to try it.

Light uses Latte. Your choices stay in this browser.

← The six-course studio
Two machines / one growing body of work

Your hardware.
Your two studios.

Your AMD laptop and M4 Pro can share the C++ foundations, scene ideas, tests, and images. Each graphics API gets a small platform boundary and an honest record of what the device supports.

01 / AMD · CachyOS · Zephyrus G14

The explicit studio.

Use this machine for native OpenGL and Vulkan. The OpenGL course starts with a 3.3 core feature set. Vulkan lessons inspect the selected device, supported features, and limits before enabling a rendering path.

The exact AMD model is still yours to record. On a laptop with multiple GPUs, enumerate devices and choose deliberately; the first device is not a promise about performance.

A small capability postcard

lspci -nnk
glxinfo -B
vulkaninfo --summary

Run the commands available on your machine. If one is missing, consult your distribution’s package documentation. These commands describe the current driver and device; they do not install or change them.

  • Record the chosen GPU, driver, API version, and power mode.
  • Run the OpenGL starter and Vulkan capability probe.
  • Keep that report with each benchmark so comparisons mean something.

Mesa’s RADV documentation explains its AMD Vulkan driver. The Khronos development guide explains the loader, SDK tools, and validation layers.

Start the OpenGL workshop ↗
02 / Apple · macOS · M4 Pro

The native Apple studio.

Use this machine for Metal, with C++ through metal-cpp, Metal Shading Language for shaders, and a narrow Objective-C++ boundary where the platform needs one. CPU rendering and concurrency exercises also run here.

The OpenGL starter is a compatibility bridge on macOS. Apple deprecated OpenGL; the Mac route does not assume the newer desktop OpenGL features available on your Linux machine.

A small capability postcard

sw_vers
xcodebuild -version
xcrun metal --version

Use Xcode for the SDK and GPU debugging tools. Recent Xcode versions offer the Metal Toolchain as a separate component: check its availability before assuming an offline shader compiler is installed. The companion compiles its tiny kernel at runtime through Metal. The Metal companion reports the selected device and queried capabilities; a chip name alone does not establish the OS/API feature set.

  • Record the macOS and Xcode versions with your rendering evidence.
  • Query device families and limits before enabling an optional feature.
  • Keep work-laptop setup within your organization’s tooling policy.

See Apple’s Xcode component guide, metal-cpp integration guide, Metal capability tables, and OpenGL deprecation notice.

Explore Copper Orchard ↗
What crosses the bridge?

Share concepts.
Make differences visible.

Use C++23 for the host programs, CMake to describe targets, Ninja to run the generated build, and Clang (Apple Clang on the Mac) to compile. Shader languages have their own versions: the C++ setting does not select GLSL or Metal Shading Language. Keep C++26 experiments separate and check the exact compiler and library support.

Keep scene values, camera mathematics, image comparison, and CPU tests portable. Let OpenGL, Vulkan, and Metal own their native resources behind clear interfaces. Build each backend first; extract shared machinery when there is a real common contract.

Use AMD Linux as the primary Vulkan target. Your M4 Pro can also run Vulkan through KosmicKrisp, the Vulkan-conformant driver built on Metal 4 for Apple Silicon and macOS 26 or later. The macOS Vulkan SDK supplies this driver, a loader, and validation tools. Check the installed implementation and features before use; a Mac run complements AMD testing. MoltenVK’s current guidance recommends KosmicKrisp for Apple Silicon, retaining MoltenVK for other supported targets. Neither path replaces learning Metal directly.

None of the course projects requires CUDA, an NVIDIA GPU, or hardware ray tracing. The path tracer begins on the CPU. Start with small images and bounded work, then measure before increasing the budget.

Experiment with GPU completion and resource lifetime →