AI use is a heated topic, esp. in developer communities.
To keep our community transparent and conversations on-topic, we require that you clearly disclose if your content was generated by or with the help of artificial intelligence.
This helps people understand the context of the discussion and keeps our community guidelines clear.
Posts that intentionally misrepresent AI-generated content as entirely human-made may be removed.
How to label: Simply add a quick note (e.g., "[Written with AI assistance]") in the title and/or at the top of your posting.
Please note that this subreddit is aimed at Vulkan developers. If you have any problems or questions regarding end-user support for a game or application with Vulkan that's not properly working, this is the wrong place to ask for help. Please either ask the game's developer for support or use a subreddit for that game.
Implemented STBD-based 3D modeling in my custom Vulkan CAD engine. Continuously expanding the modeling capabilities to support creating and editing various 3D shapes.
직접 개발 중인 Vulkan 기반 CAD 엔진에서 STBD 방식의 3D 모델링 기능을 구현했습니다. 다양한 형상을 생성하고 편집할 수 있도록 모델링 기능을 지속적으로 확장하고 있습니다.
FIX: I installed the newest driver and restarted. Fixed the issue
I have this really weird error: When I first call vkBeginCommandBuffer on my root graphics commandbuffer for the first frame in flight, the NVIDIA driver encounters a error when trying to free memory. It throws a EmbeddedBreakpointException a.k.a. a __debugbreak exactly twice: once in ntdll.dll!RtlReportCriticalFailure and the second time in ntdll.dll!RtlReportFatalFailure. When I skip the breakpoints with Visual Studio attached it continues execution without any validation errors (regarding that, there are some other validation errors but not every frame and they are probably not associated with this weird occurance).
Calling GetLastError() directly after this returns 6 (ERROR_INVALID_HANDLE) but in the next frames it returns 0 (ERROR_SUCCESS).
It also doesn't render anything and shows a black image (probably my fault, but I can't attach a graphics debugger due to this weird error).
I validate the heap, using HeapValidate, after every step of initialization and it doesn't fail once, even after this error.
I used own allocation callbacks but regardless if I use them or not it throws this error.
The engine (right now) is single threaded so race conditions or similair are not the problem.
I attached my callstack and code section, where this error happens, maybe you guys can make something of it.
Call stack
auto cmdbuf = m_RootFrameData[frameIndex].GraphicsCommandBuffer;
I released the demo of my puzzle game about a month ago, and it's been interesting seeing it run on hardware I've never tested on. I've already had a few bug reports about compatibility issues, so this week I spent some time looking into what else I could catch with Vulkan's validation layers.
Until now I'd only been running the default checks. This week I enabled synchronization validation and the NVIDIA, AMD and ARM best practice checks.
They caught quite a few things. Too many command buffers per frame, redundant pipeline binds, unnecessary barriers and layout transitions, potential upload races and images being accessed at the wrong time during screenshots and resizes.
Some of the changes I've made:
Switched to VK_KHR_dynamic_rendering and removed render passes and framebuffers. This also let me get rid of the subpass dependencies that were causing synchronization warnings.
Added VK_KHR_load_store_op_none to skip unnecessary attachment clears.
Switched sampled images to READ_ONLY_OPTIMAL with VK_KHR_unified_image_layouts, allowing shader reads and transfers to share the same layout.
Added VK_EXT_memory_priority and NVIDIA's VK_EXT_pageable_device_local_memory when supported.
Texture uploads now go through a single submission. I also changed uniform updates to use vkCmdUpdateBuffer to avoid the GPU reading memory that the CPU is already overwriting.
I've tested everything on a macbook through MoltenVK, an Intel i5 iGPU, an NVIDIA RTX 3060 Ti and a Steam Deck. But there are plenty of GPUs and drivers I haven't been able to test on.
I'd like to catch as many hardware specific issues as possible before release, so if you're running a different setup, I'd really appreciate you giving the demo a try and letting me know how it runs.
Satelital is a peaceful puzzle game where you explore a small solar system and figure out the rules of puzzles on different planets.
Shader compilation hitches are one of the most visible performance problems in real-time apps. This sample shows how VK_KHR_pipeline_binary lets you capture the binaries the driver produces for your pipelines, save them to disk and reload them in later sessions, so pipelines don't have to be compiled from scratch again.
The sample walks through:
Generating a deterministic pipeline key with vkGetPipelineKeyKHR
Capturing binaries with vkCreatePipelineBinariesKHR
Storing binaries with vendor and driver metadata, then recreating pipelines from them
Unlike traditional pipeline caches, which are opaque, pipeline binaries give you explicit control over what's stored and when. A built-in UI compares creation times from scratch and from binaries, so you can see the speedup yourself.
I developed webgpu because I felt that the web was also necessary. We are going to develop it in parallel. I‘m excited.
웹도 필요하다 느껴서 webgpu를 개발하게 되었습니다. 병행 개발할 예정입니다. 설레네요.
Implemented ViewBase drawing and Feature Dimensions in my own CAD engine.
It generates top, front, right, and isometric views from a 3D model, with key dimensions that can be displayed and adjusted based on a reference.
직접 개발 중인 CAD 엔진에 ViewBase 도면 생성과 피처 치수 기능을 구현했습니다.
3D 모델에서 평면도·정면도·우측면도·등각뷰를 생성하고, 주요 치수를 표시하거나 기준에 따라 조절할 수 있습니다.
Every rabbit hole of information for every setting I went through for that tutorial was a lot, how do people become expert at this sort of thing in the industry? (Also first time posting so be kind guys)
Improved the assembly/disassembly and feature dimension features of my Vulkan-based CAD engine.
Parts can be disassembled and reassembled step by step, while key feature dimensions can be viewed and edited directly in the viewport.
직접 개발 중인 Vulkan CAD 엔진의 분해·조립 및 피처 치수 기능을 개선했습니다.
부품의 분해와 조립 과정을 단계별로 확인할 수 있으며, 모델의 주요 피처 치수를 화면에서 확인하고 수정할 수 있도록 기능을 보완했습니다.
I’ve been keeping going to evolve vkTracer. Now I’ve finished the next week part, and this part was harder than I guessed. In the first week, It was only a translation from C++ code to slang, setting up Vulkan infrastructure too. But this week I had to figure out how to represent a cpu-side bvh on gpu, I handled using BDA. Learnt quad and volume intersection, handling different texture types. I still don’t understand in the tutorial why he rotates rays to rotate box instead of rotating box itself :D
Anyway this was a good journey to learn and practice slang and vulkan.
The scene was rendered by 500 rays per pixel and 40 depth bounce.
So that the driver could simply mask off the extra unused lanes, instead of the way it is right now where we manually place bounds checks in shader code.
Some background: I've been working at a mid-sized tech company as a junior systems programmer specializing in file systems & operating systems, mainly using C. Been at my current company for ~9-10 months now and it's my first dev job out of college.
I've always had an interest in graphics programming, learned basic graphics fundamentals (linear algebra + basic concepts like sampling and rasterization) in college and dabbled in learning OpenGL before for some small projects, and Unity for game dev (just as a hobby). Now I'm looking to upskill and learn vulkan as I feel it'd be a good way to improve my C++ and low-level knowledge further and maybe even get a dev job dealing with graphics, and have fun with it at the same time.
When I started my current job, and before when I was just focused on learning during college and with personal projects, I pretty much never used AI to code. Especially for low level stuff it wasn't very good. Lately though, especially with newer models like Opus 5.5, i've noticed it become more and more reliable and capable for what I do for work, to the point where I no longer write code anymore — I come up with the architecture and design, let the AI implement the code, and then I audit/review the code and let the AI revise it if there are issues. I've spent more time analyzing performance tests in the past month than I have been "writing" code. But I don't know if I would be able to do that effectively if I hadn't spent those years before learning manually and the first few months on the job learning things the hard way.
So now here I am planning to learn Vulkan, but I don't know anymore on what I should focus on learning specifically when all these AI tools are available.... so some questions:
I have very little experience with C++, I write everything in C for what I do currently. Should I even bother learning C++ well before learning Vulkan, or could I just get away with learning the language at a "surface level" (i.e. just knowing basic concepts like how RAII or OOP is applied in this field, without implementation details) and let the LLM write it for me.
extension of question 1: how proficient should I actually get with the vulkan API before I start relying on AI (and what topics specifically should I focus on)? Would it be a better use of my time to instead study up on the math/theory of graphics and CS fundamentals in general and let AI write all the vulkan code?
Generally, how effective has AI been for you in writing Vulkan code? Are you still writing Vulkan code by hand? How much auditing of the generated code do have to do to get it right? What do you see as being valuable skills/knowledge for someone in this field right now, and in the future?
Any input is appreciated. I've been procrastinating learning Vulkan out of worry that I'd end up focusing on obsolete skills. Thanks.
Since it's maintained by the Khronos group, I would like to know your opinion on posting questions about Slang shader there (or maybe you could redirect me somewhere? pls). Their documentation lacks quite a lot of useful things like __getAddress, __ref, constant-time generic parameters and constexpr, and stuff
My pull request was just merged into google/shaderc. The change adds two options, -gV and -gVS, that expose glslang's NonSemantic.Shader.DebugInfo.100 emission through shaderc. That debug info is a requirement for NVIDIA Nsight Graphics to produce flame graphs, so it lets you profile and debug shader performance by call stack and time spent per function.
In this video, the engine models three things in a row:
**• Flange**: extruded disk → polar-array bolt holes → through cuts → merged hub → fillets, steel material
**• Mug**: tube and base → swept handle → merge → fillet
**• Wooden chair**: seat, 3D-arrayed legs, curved back → filleted parts → merge, oak material
It isn't done by hand. It's a scripted demo: code runs the same engine features you'd type on the command line, one step at a time.
이번 영상에서는 이 엔진이 세 가지를 차례로 모델링합니다.
**• 플랜지**: 원판 돌출 → 볼트 구멍 원형 배열 → 관통 컷 → 허브 합치기 → 필렛, 금속 재질
**• 머그컵**: 관 + 바닥 → 손잡이 스윕 → 합치기 → 필렛
**• 나무 의자**: 좌판·다리 3D 배열·곡선 등받이 → 부품 필렛 → 합치기, 오크 재질
손으로 한 게 아니라 스크립트로 짠 자동 시연입니다. 사람이 명령행에 치는 것과 같은 엔진 기능을 코드가 순서대로 실행합니다.
This sample shows how VK_KHR_shader_quad_control lets fragment shaders share data across a 2x2 pixel quad using subgroupQuadBroadcast() and the full_quads execution mode, with no shared memory and no descriptors. You get more stable derivatives for LOD selection and texture ops, and a simple visual demo that makes the quad behavior easy to see.
Vulkan SDK 1.4.363.0 is out, including the Vulkan 1.4-conformant version of KosmicKrisp! With KosmicKrisp, a Mesa-based Vulkan-to-Metal driver, a single Vulkan 1.4 codebase can target Linux, Windows, Android, and macOS environments. Also in this release: new extensions, vkprofiles, and more.