Work-In-Progress Race Track Editor for my antigravity racing game project

Work-In-Progress Race Track Editor for my antigravity racing game project. The camera jumps in the video capture are caused by the KVM-IP software "Mouse without Borders", which has problems with mouse wrapping, in other words, these camera jumps do not happen otherwise in normal use without KVM-IP software.

Hand controller tracking at my PasOpenVR project is also working now

Hand controller tracking at my PasOpenVR project is also working now 🙂

And not to mention the unreliability of camera-based controller tracking on WMR VR headsets in dark rooms where it has no reliability reference visual tracking points then.

New side-project PasOpenVR - OpenVR-based Virtual Reality with Object Pascal

My new side-project "PasOpenVR" OpenVR-based Virtual Reality with Object Pascal, compatible with Delphi >= 10.2 and FreePascal >= 3.0.4.

The next step is to implement the tracking of the hand controllers

First working versions of TpvGUIColorWheel and TpvGUIColorPicker in the PasVulkan GUI subframework

First working versions of TpvGUIColorWheel and TpvGUIColorPicker in the PasVulkan GUI subframework, where the whole triangle color wheel is rendered by the GPU itself only with two GPU-triangles with help of fragment-shader-side 2D signed-distance-field-stuff, and  where it can be also controlled purely with the keyboard.



PasVulkan GUI subframework now with Window-tabbing feature

PasVulkan GUI subframework now with Window-tabbing feature with Ctrl+(Shift+)Tab


First working version of TpvGUIVulkanCanvas in the PasVulkan GUI subframework

First working version of TpvGUIVulkanCanvas in the PasVulkan GUI subframework, it works completely without render-to-texture tricks, so it is rendered directly to the final framebuffer, but which is a bit tricky with the two-pass front-to-back-opaque and back-to-front transparent GUI rendering strategy, so it is a three-pass GUI rendering strategy here, with a third back-to-front opaque VulkanCanvas render pass as "first" pass.



The two different GUI rendering strategies at PasVulkan with the Vulkan API

Admittedly, the Vulkan API calls could potentially be further optimized and merged.

The Vulkan header generator and Vulkan header of PasVulkan is from this time point on also Vulkan 1.1 ready now

The Vulkan header generator and Vulkan header of PasVulkan are from this time point on also Vulkan 1.1 ready now, which took me about an hour to tweak and fix the PasVulkan Vulkan header generator for the new vk.xml format changes and vk.xml format additions. So have fun! 🙂

Mali T760 MP8 non-working-fragment-discarding issue workarounded

PasVulkan GUI subframework Mali T760 MP8 non-working-fragment-discarding issue is workarounded with VK_DYNAMIC_STATE_SCISSOR now.



Fragment-based discarding clipping issues on Mali GPUs

Mali T760 on Galaxy S6 seems to ignore the GLSL discard command regardless of whether "layout (early_fragment_tests) in;" is defined or not, and Mali seems doesn't support gl_ClipDistance[] in contrast to Adreno and Tegra mobile GPUs.

On mobile GPUs, the PasVulkan GUI renderer uses Z-Buffer-based front-to-back rendering for opaque objects like widgets centers, and back-to-front rendering for transparent objects like widget edges, text, icons, and so on.

And on normal Desktop/Notebook iGPUs/dGPUs the PasVulkan GUI renderer uses brute-force only-alpha-blended back-to-front rendering, because it is faster there than the two-pass-optimization-technique for mobile GPUs but it seems, that at least Mali GPUs has a problem with that two-pass-optimization-technique.

All in all, The PasVulkan GUI renderer uses gl_ClipDistance if it's supported, otherwise it uses fragment discards.

You can see the problem with a Mali GPU and a comparison with a Tegra GPU at


(Galaxy S6 with ARM Mali T760 MP8)

vs


(NVIDIA Tablet K1 with NVIDIA … (read more)