And for WebGPU, it seems like C++, Rust and HLSL had a baby named WGSL.
Finally, GLSL on desktop, GL ES, WebGL and Vulkan isn't the same language anyway, just close enough to port most shaders.
And for WebGPU, it seems like C++, Rust and HLSL had a baby named WGSL.
Finally, GLSL on desktop, GL ES, WebGL and Vulkan isn't the same language anyway, just close enough to port most shaders.
I originally learned opengl in school and after a few years of working with it I transitioned to a job where we primarily used Direct3D. I guess I had passively picked up enough bits and pieces along the way because I never really thought about the shift.
I briefly looked at Vulkan when it first came out, but I haven't had the time to get into it. That's a whole different beast.
For me I settled on: 1) Learn WebGL in the browser. It’s a pretty good subset of OpenGL [ES] and an easy environment to experiment in. Then 2) learn a more “native” approach with good tooling support, such as Direct3D 11. (I wouldn’t get into D3D12 or Vulkan until you learn the basics pretty well).
As others have mentioned, while the landscape is confusing, the concepts across them are pretty similar once you get a foothold.
Sony uses a variant of HLSL called PSSL [1], where one of the goals to it was being HLSL-compatible.
[0] https://tcrf.net/Mario_Kart_8/Kiosk_Demo_(April_4th,_2016)/d... [1] https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdceurope201...
Not all Nintendo consoles do so.
And the switch has even GL 4.5, Vulkan and NVN to chose from.
As anyone with some graphic programming experience in cross platform knows, even among GL variants, being a variant is enough for shaders not to compile the same way and require code rewrites.
The Wii U has a custom GX2 API, where the official shader language is GLSL (again, see the Mario Kart 8 kiosk demo).
The Switch has NVN, GL, Vulkan, where the official shader language for all three is GLSL (based on NVIDIA's GLSL compiler).
Secondly, the Cafe SDK documentation clearly refers to OpenGL 3.3, and GX2 is basically OpenGL in spirit while using naming and some utility functions, which fits "GL based API similar to GL 3.3".
I assume you also have access to Cafe documentation.