<feed xmlns='http://www.w3.org/2005/Atom'>
<title>surreality/src/graphics, branch main</title>
<subtitle>A game and rendering engine written in Rust. There are many like it, but this one is ours.
</subtitle>
<id>http://code.irenes.space/surreality/atom?h=main</id>
<link rel='self' href='http://code.irenes.space/surreality/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/'/>
<updated>2026-08-17T10:32:02+00:00</updated>
<entry>
<title>draw three teapots</title>
<updated>2026-08-17T10:32:02+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-17T10:32:02+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=4b63074631fa35bd875a79b5c31d490d10a0491e'/>
<id>urn:sha1:4b63074631fa35bd875a79b5c31d490d10a0491e</id>
<content type='text'>
and split out the model rendering code a bunch for rapid instancing

Force-Push: yes
Change-Id: I75be46d8cd11bbf662013711ee5ec56abeb5e6ea
</content>
</entry>
<entry>
<title>move the texture binding to a push descriptor</title>
<updated>2026-08-17T09:07:34+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-17T08:41:16+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=b52d1be4302e452a45a03595f8c70411a061f920'/>
<id>urn:sha1:b52d1be4302e452a45a03595f8c70411a061f920</id>
<content type='text'>
with a descriptor update template, even

yay

this also moves us to a minimum Vulkan version of 1.4, which we understand to be widely deployed. in theory, push descriptors and update templates were available via extensions in earlier versions, but it doesn't seem worth doing the work to switch out whether we use the extensions based on the version, so we don't.

Force-Push: yes
Change-Id: I26db8771abf5626d9614630c66e019ea99babcac
</content>
</entry>
<entry>
<title>move uniform buffers into Frame</title>
<updated>2026-08-16T09:08:18+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-16T03:26:28+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=db64249ce8108439ada78a2d23d67d2c573a1688'/>
<id>urn:sha1:db64249ce8108439ada78a2d23d67d2c573a1688</id>
<content type='text'>
it's better this way. same lifetime.

Force-Push: yes
Change-Id: Ida309f05132838febcc9eb606f5915e7592ac398
</content>
</entry>
<entry>
<title>move the Frame destruction code to where it goes</title>
<updated>2026-08-15T01:54:33+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-15T01:54:33+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=2fae64a18c3253a892c9b3e529fb7b09e0bac753'/>
<id>urn:sha1:2fae64a18c3253a892c9b3e529fb7b09e0bac753</id>
<content type='text'>
this is, however, the first time one of these render state objects has been managed by another one rather than by main() directly, so there's a little weirdness around the lifetime logic that might need reconsidering. seems okay for now though.

Force-Push: yes
Change-Id: Ide3b9f0a7163f78a51ceed4dfb506232475354dd
</content>
</entry>
<entry>
<title>move all the per-frame stuff into its own struct and file</title>
<updated>2026-08-14T09:35:23+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-14T09:35:23+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=5a4fad7b67a6ab477b230f4d8a70efed0e9100cb'/>
<id>urn:sha1:5a4fad7b67a6ab477b230f4d8a70efed0e9100cb</id>
<content type='text'>
Force-Push: yes
Change-Id: I54b5c8fcc692616f83a37039a445796dddd4b7e4
</content>
</entry>
<entry>
<title>split the texture's sampler and its image view into separaet bindings</title>
<updated>2026-08-13T02:13:32+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-13T02:13:32+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=19e3a0f319fd04c1dde803796ec272d038b634f7'/>
<id>urn:sha1:19e3a0f319fd04c1dde803796ec272d038b634f7</id>
<content type='text'>
this will make it easier to change the image view dynamically as a push update, in a future CL

Force-Push: yes
Change-Id: If7cfab07913a5a462e16dd7fb478ed491d33d4d9
</content>
</entry>
<entry>
<title>abstract over bundled assets</title>
<updated>2026-08-10T03:23:13+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-10T03:09:35+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=bbe9d5993bb922ad6b33a21c3557143cecaf960d'/>
<id>urn:sha1:bbe9d5993bb922ad6b33a21c3557143cecaf960d</id>
<content type='text'>
yay build script stuff :)

Force-Push: yes
Change-Id: I694651febb02f42dac904f0dfbf4089c33ef937e
</content>
</entry>
<entry>
<title>move PNG-specific code to a new module files::png</title>
<updated>2026-08-10T01:05:15+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-10T01:05:15+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=1216c5f3dd1f902fb545db875e2b88f50d24e580'/>
<id>urn:sha1:1216c5f3dd1f902fb545db875e2b88f50d24e580</id>
<content type='text'>
this mirrors files::obj

Force-Push: yes
Change-Id: I17ccae0b54b49453100873ba707ee36406b96057
</content>
</entry>
<entry>
<title>rename and reexport a bunch of graphics state types</title>
<updated>2026-08-10T00:53:43+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-10T00:36:41+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=d672e147db0df6186c528262367770dcde9d75fc'/>
<id>urn:sha1:d672e147db0df6186c528262367770dcde9d75fc</id>
<content type='text'>
the word "graphics" is part of the module name, so it does not need to be part of the struct name

the fact that an object holds state is... not strictly implied by the fact it's a struct, but it happens that ALL our objects exist primarily to hold state, so we remove that word as well

Force-Push: yes
Change-Id: I1b3e2ac0f1c29304e75a190172463aabfba4b3a4
</content>
</entry>
<entry>
<title>refactor Texture into its own thing</title>
<updated>2026-08-10T00:10:03+00:00</updated>
<author>
<name>Irene Knapp</name>
<email>ireneista@irenes.space</email>
</author>
<published>2026-08-10T00:10:03+00:00</published>
<link rel='alternate' type='text/html' href='http://code.irenes.space/surreality/commit/?id=4158fed109ae789cb3ca7ff53c2790797a3b4087'/>
<id>urn:sha1:4158fed109ae789cb3ca7ff53c2790797a3b4087</id>
<content type='text'>
as part of this, the command pools are moved from window dressing to permanent

note also how mip count is a value computed by loading the texture, and used when creating the sampler, which is part of the window dressing. the assumption about how it's computed will have to change when we support multiple textures, but for now we settle for just pushing the assumption to the top level.

Force-Push: yes
Change-Id: I545c53feedc99628fbe943120798fe66fe9e065b
</content>
</entry>
</feed>
