@castano@mastodon.gamedev.place
@castano@mastodon.gamedev.place avatar

castano

@castano@mastodon.gamedev.place

Master swimmer, mountain climber, and stand up coder.
I work on texture and mesh processing at Ludicon.
Formerly at Roblox, Thekla (The Witness), NVIDIA, OddWorld, Relic, Crytek.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

castano, to random
@castano@mastodon.gamedev.place avatar

I'm going on vacation next week (backpacking the lost coast!) and I've been busting my ass trying to release the next version of Spark.

However, there are too many loose ends and little things that I'm not happy with, so I'm afraid that's not going to happen before my departure.

I'll put together a release candidate for the clients that want to take a peek at the new features, but I'll wrap it up once I'm back.

castano,
@castano@mastodon.gamedev.place avatar

The main focus of this release is better support for PC formats and pipelines. The shader generator produces better HLSL shaders and I've validated them under FXC, DXC, and glslang, using both DXIL and SPIR-V outputs.

I now have a fairly large matrix of shader variants and compilation modes. I still need to track quality regressions for all combinations, but I do validate the build, and run the resulting bytecode under all offline compilers and track metrics for each IHV.

castano,
@castano@mastodon.gamedev.place avatar

In addition to this I have developed some new high quality codecs and some specialized codecs for virtual texturing use cases.

It's hard to feel happy with the results knowing there's still room for improvement, but I have to release them at some point. Let's look at some examples:

New codec

castano, to random
@castano@mastodon.gamedev.place avatar

Purchasing health insurance through covered california is hell. I've lost track of the number days I've spent doing paperwork, waiting on phone calls, etc. and I still have shit to do, like "proving that I'm not incarcerated" and "provide proof that I'm not deceased". WTF.

castano, to random
@castano@mastodon.gamedev.place avatar

Looks like in D3D12, the min16 precision types are supported only if the D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT is set, is that right?

Kind of annoying that this requires having an additional shader variant.

Wouldn't it make more sense if this was always supported, but types were promoted to 32 bit when the hw did not have support, just like in D3D11 or mediump in GLSL?

castano,
@castano@mastodon.gamedev.place avatar

@micha I'm not sure, which is why I'm asking. I don't have a GPU that doesn't expose that flag, but I'm trying to make sense of the issue another developer is reporting (on GTX 1060 shader works in D3D11, but not on D3D12).

castano,
@castano@mastodon.gamedev.place avatar

@micha This is what the documentation says:

the graphics hardware can perform HLSL operations at a lower precision than the standard 32-bit float precision, but doesn’t guarantee that the graphics hardware will actually run at a lower precision

https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_shader_min_precision_support

dotstdy, to random
@dotstdy@mastodon.social avatar

It's a bit interesting that the best option for a shading language with Vulkan is probably HLSL, not GLSL.

castano,
@castano@mastodon.gamedev.place avatar

@dotstdy @wolfpld @xoofx GLSL has a better extension mechanism and supports 8 bit data types. Also, there are many compilers that are mostly conformant, whereas there are 3/4 HLSL compilers that are incompatible with each other. Not saying I prefer GLSL, but just providing a counterpoint.

castano, to random
@castano@mastodon.gamedev.place avatar

Is there a way not to burn quithub's LFS quota on github actions?
I have a repo with GBs of LFS data, and it looks like the checkout action downloads the entire thing every time it's triggered.
This is not only is extremely wasteful, but also gets expensive very quickly!

castano,
@castano@mastodon.gamedev.place avatar

@arachromatics Thanks, I’ll give that a try. I tried using the GIT_LFS_SKIP_SMUDGE environment variable, which I thought would do the same, but that didn’t seem to change anything.

castano,
@castano@mastodon.gamedev.place avatar

@bitinn Yeah, I also get the impression it’s intentionally wasteful. 😔

castano,
@castano@mastodon.gamedev.place avatar

@wolfpld That was actually a typo, but I guess my subconscious is trying to tell me something 😂

I’m frustrated, but not on the verge of quitting yet.

castano,
@castano@mastodon.gamedev.place avatar

@MouseByTheSea @wolfpld If I went self hosted I would probably avoid git entirely. I miss subversion.

castano,
@castano@mastodon.gamedev.place avatar

@MouseByTheSea @wolfpld You can throw anything at it and it just works. Adding commit hooks is trivial, integration with CI straightforward. Maybe it’s just familiarity, but in comparison git feels like pulling teeth.

castano,
@castano@mastodon.gamedev.place avatar

My main frustration with git is mostly due to github. LFS has actually been working great for me, but the LFS bandwidth charges are excessive and many services that interact with github don't have a way to prevent them. xcode cloud, for example, always downloads LFS files. That just makes it useless for me.

I guess I could have avoided LFS, but that means I would need to use two revision systems or at least two separate repositories, with the problems that entails.

castano,
@castano@mastodon.gamedev.place avatar

Github actions are a pain to debug and overkill.
All I want is a lightweight post-commit / post-receive hook, but github doesn't allow server side hooks.
Why perform a fresh checkout, and install python or whatever tool I need on every push?

gfxstrand, to random
@gfxstrand@mastodon.gamedev.place avatar

This week's project: Reworking NVK cbuf support. We've had a lot of issues with too much internal stalling and I think a lot of them come down to the fact that we're re-binding cbufs every draw call.

My plan for root constants, is to do inline updates with the LOAD_CONSTANT_BUFFER command. I don't know how much of a difference there is but I strongly suspect this pipelines much better.

For bound cbufs, I'm planning to just make our dirty tracking way more competent.

We'll see how it goes!

castano,
@castano@mastodon.gamedev.place avatar

@Biovf @gfxstrand Agreed! And I love you are using The Witness for testing ☺️

castano,
@castano@mastodon.gamedev.place avatar

@gfxstrand @Biovf I wish we had left some of the developer features enabled. We had various perf hotspots that you could quickly teleport to with a console command or a hotkey. If you dragged and dropped a screenshot it teleported you to the location where it was taken, etc.

castano,
@castano@mastodon.gamedev.place avatar

@nh @gfxstrand @Biovf That would be ideal, but I just stuffed the location info in the first few pixels of the image.

castano,
@castano@mastodon.gamedev.place avatar

@dotstdy @nh @gfxstrand @Biovf This was for internal use. Developers shared screenshots over email or slack. The nice thing about just overriding pixels vs metadata is that you could just copy paste the image and it would still work.

Screenshot tool was integrated in the game. It automatically puts a resized image in the clipboard that you could just paste anywhere, and also saved it to disk. It created a nice record of your development progress.

anji, to random
@anji@metalhead.club avatar

Just biked for 32 miles. It was a fantastic day. It's still nice out but now I can only sorely be sore.

castano,
@castano@mastodon.gamedev.place avatar

@anji It was certainly a beautiful day in the Bay. Days like this make me wonder how nice it would be to live there if it wasn’t such an urbanistic disaster.

castano, to random
@castano@mastodon.gamedev.place avatar

Yesterday was my first time visiting a customer. Wasn’t sure what to expect, but it turned out being super useful to understand their needs, pain points, and how to address them. It was also really fun to take a peek at their development tools and processes.
I’m an introvert and these things take a toll on my energy. I also feel I cannot think clearly in the moment. In retrospect I see all the ways in which it could have been more productive, but despite of that I think it was worth it.

floooh, to random
@floooh@mastodon.gamedev.place avatar

I just merged a (surprisingly small) PR which adds a NOAPI mode to the sokol_app.h Windows backend:

https://github.com/floooh/sokol/pull/1034

...NOAPI support for other platforms will follow in the future.

castano,
@castano@mastodon.gamedev.place avatar

@floooh I’ve been using sokol_app with the NOAPI patch on the Vulkan and D3D12 examples in my SDK on Windows and Android. It’s nice to be able to rely on sokol_app regardless of the API!

castano, to random
@castano@mastodon.gamedev.place avatar

This is the performance regression that I discovered a while ago:

https://github.com/KhronosGroup/SPIRV-Tools/issues/5658

If you are targeting Android devices, make use of fp16 math and you are using a recent build of spirv-opt (last two years), then you are most likely affected. The proposed fix should give you a noticeable performance boost.

castano,
@castano@mastodon.gamedev.place avatar

@pal It’s unfortunate the spir-v team has taken a defensive position and does not appear to be doing anything to fix the problem. Maybe that could change if others chime in and support the change.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • cisconetworking
  • mdbf
  • tacticalgear
  • magazineikmin
  • thenastyranch
  • rosin
  • everett
  • Youngstown
  • khanakhh
  • slotface
  • ngwrru68w68
  • kavyap
  • DreamBathrooms
  • JUstTest
  • InstantRegret
  • osvaldo12
  • GTA5RPClips
  • ethstaker
  • tester
  • Durango
  • normalnudes
  • anitta
  • modclub
  • cubers
  • Leos
  • provamag3
  • lostlight
  • All magazines