Adding a Particle System Cache
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:05Set the stage for working on the particle system
0:05Set the stage for working on the particle system
0:05Set the stage for working on the particle system
3:15Blackboard: Sim Regions and a Persistent Particle System
3:15Blackboard: Sim Regions and a Persistent Particle System
3:15Blackboard: Sim Regions and a Persistent Particle System
6:43Blackboard: Deterministic f(t) Particle System
6:43Blackboard: Deterministic f(t) Particle System
6:43Blackboard: Deterministic f(t) Particle System
9:50Blackboard: f(delta*t) Particle System
9:50Blackboard: f(delta*t) Particle System
9:50Blackboard: f(delta*t) Particle System
10:57Blackboard: The expense of a persistent f(t) particle system
10:57Blackboard: The expense of a persistent f(t) particle system
10:57Blackboard: The expense of a persistent f(t) particle system
14:50Blackboard: Cached particles
14:50Blackboard: Cached particles
14:50Blackboard: Cached particles
19:57Set the stage for tomorrow
19:57Set the stage for tomorrow
19:57Set the stage for tomorrow
22:38Run the game and see our current situation, before taking a look at the sim_region stuff
22:38Run the game and see our current situation, before taking a look at the sim_region stuff
22:38Run the game and see our current situation, before taking a look at the sim_region stuff
25:12Create handmade_particles.h and handmade_particles.cpp, and talk a little about writing the usage code first
25:12Create handmade_particles.h and handmade_particles.cpp, and talk a little about writing the usage code first
25:12Create handmade_particles.h and handmade_particles.cpp, and talk a little about writing the usage code first
27:14handmade_sim_region.cpp: Make BeginSim() assert that we have a Source
27:14handmade_sim_region.cpp: Make BeginSim() assert that we have a Source
27:14handmade_sim_region.cpp: Make BeginSim() assert that we have a Source
28:41handmade_sim_region.cpp: Start to add the calling site code for the particle system to BeginSim()
28:41handmade_sim_region.cpp: Start to add the calling site code for the particle system to BeginSim()
28:41handmade_sim_region.cpp: Start to add the calling site code for the particle system to BeginSim()
32:49Blackboard: Shutting down the particle code
32:49Blackboard: Shutting down the particle code
32:49Blackboard: Shutting down the particle code
36:31handmade_sim_region.cpp: Make BeginSim() activate the particle system upon unpacking
36:31handmade_sim_region.cpp: Make BeginSim() activate the particle system upon unpacking
36:31handmade_sim_region.cpp: Make BeginSim() activate the particle system upon unpacking
37:56handmade_entity.cpp: Make UpdateAndRenderEntities() initialise the particle_cache and call UpdateAndRenderParticleSystem()
37:56handmade_entity.cpp: Make UpdateAndRenderEntities() initialise the particle_cache and call UpdateAndRenderParticleSystem()
37:56handmade_entity.cpp: Make UpdateAndRenderEntities() initialise the particle_cache and call UpdateAndRenderParticleSystem()
40:54handmade_particles.cpp: Introduce UpdateAndRenderParticleSystem(), GetOrCreateParticleSystem() and TouchParticleSystem()
40:54handmade_particles.cpp: Introduce UpdateAndRenderParticleSystem(), GetOrCreateParticleSystem() and TouchParticleSystem()
40:54handmade_particles.cpp: Introduce UpdateAndRenderParticleSystem(), GetOrCreateParticleSystem() and TouchParticleSystem()
43:57handmade_world_mode.cpp: Make UpdateAndRenderWorld() rather than UpdateAndRenderEntities() call UpdateAndRenderParticleSystem()
43:57handmade_world_mode.cpp: Make UpdateAndRenderWorld() rather than UpdateAndRenderEntities() call UpdateAndRenderParticleSystem()
43:57handmade_world_mode.cpp: Make UpdateAndRenderWorld() rather than UpdateAndRenderEntities() call UpdateAndRenderParticleSystem()
44:48handmade_particles.cpp: Pluralise UpdateAndRenderParticleSystems()
44:48handmade_particles.cpp: Pluralise UpdateAndRenderParticleSystems()
44:48handmade_particles.cpp: Pluralise UpdateAndRenderParticleSystems()
46:07handmade_particles.h: Introduce particle_system and particle_cache structs
46:07handmade_particles.h: Introduce particle_system and particle_cache structs
46:07handmade_particles.h: Introduce particle_system and particle_cache structs
48:09handmade_particles.cpp: Implement TouchParticleSystem()
48:09handmade_particles.cpp: Implement TouchParticleSystem()
48:09handmade_particles.cpp: Implement TouchParticleSystem()
50:14Calculate the number of cache lines required by our scheme
50:14Calculate the number of cache lines required by our scheme
50:14Calculate the number of cache lines required by our scheme
51:51handmade_particles.cpp: Start to implement GetOrCreateParticleSystem()
51:51handmade_particles.cpp: Start to implement GetOrCreateParticleSystem()
51:51handmade_particles.cpp: Start to implement GetOrCreateParticleSystem()
55:06handmade_particles.cpp and *.h: Introduce InitParticleSystem() and particle_spec struct
55:06handmade_particles.cpp and *.h: Introduce InitParticleSystem() and particle_spec struct
55:06handmade_particles.cpp and *.h: Introduce InitParticleSystem() and particle_spec struct
56:03handmade_sim_region.cpp: Make it optional to pass a ParticleCache to BeginSim() and do general clean-up
56:03handmade_sim_region.cpp: Make it optional to pass a ParticleCache to BeginSim() and do general clean-up
56:03handmade_sim_region.cpp: Make it optional to pass a ParticleCache to BeginSim() and do general clean-up
58:13handmade_entity.h: Introduce a version of IsEqual which takes entity_id
58:13handmade_entity.h: Introduce a version of IsEqual which takes entity_id
58:13handmade_entity.h: Introduce a version of IsEqual which takes entity_id
58:46handmade_particles.cpp: Slightly flesh out TouchParticleSystem() and UpdateAndRenderParticleSystems()
58:46handmade_particles.cpp: Slightly flesh out TouchParticleSystem() and UpdateAndRenderParticleSystems()
58:46handmade_particles.cpp: Slightly flesh out TouchParticleSystem() and UpdateAndRenderParticleSystems()
1:00:36handmade_entity.h: Add particle data to the entity struct and finish bookkeeping
1:00:36handmade_entity.h: Add particle data to the entity struct and finish bookkeeping
1:00:36handmade_entity.h: Add particle data to the entity struct and finish bookkeeping
1:02:54handmade_world_mode.cpp: Make PlayWorld() initialise the ParticleCache
1:02:54handmade_world_mode.cpp: Make PlayWorld() initialise the ParticleCache
1:02:54handmade_world_mode.cpp: Make PlayWorld() initialise the ParticleCache
1:05:08Run the game and crash and tie up some loose ends
1:05:08Run the game and crash and tie up some loose ends
1:05:08Run the game and crash and tie up some loose ends
1:07:25handmade_particles.cpp: Introduce InitParticleCache()
1:07:25handmade_particles.cpp: Introduce InitParticleCache()
1:07:25handmade_particles.cpp: Introduce InitParticleCache()
1:08:53Run the game, crash in EndSim() and investigate why
1:08:53Run the game, crash in EndSim() and investigate why
1:08:53Run the game, crash in EndSim() and investigate why
1:11:03handmade_particles.cpp: Make UpdateAndRenderParticleSystems() assert that the Cache is the correct size
1:11:03handmade_particles.cpp: Make UpdateAndRenderParticleSystems() assert that the Cache is the correct size
1:11:03handmade_particles.cpp: Make UpdateAndRenderParticleSystems() assert that the Cache is the correct size
1:13:58Investigate whether or not we're reclaiming the ParticleCache memory
1:13:58Investigate whether or not we're reclaiming the ParticleCache memory
1:13:58Investigate whether or not we're reclaiming the ParticleCache memory
1:20:03Spot the bug in GameUpdateAndRender() with our needed memory arena being closed
1:20:03Spot the bug in GameUpdateAndRender() with our needed memory arena being closed
1:20:03Spot the bug in GameUpdateAndRender() with our needed memory arena being closed
1:23:51todo.txt: Add "Arena upgrade!"
1:23:51todo.txt: Add "Arena upgrade!"
1:23:51todo.txt: Add "Arena upgrade!"
1:25:05handmade_world_mode.cpp: Make PlayWorld() allocate the ParticleCache from the ModeArena for now
1:25:05handmade_world_mode.cpp: Make PlayWorld() allocate the ParticleCache from the ModeArena for now
1:25:05handmade_world_mode.cpp: Make PlayWorld() allocate the ParticleCache from the ModeArena for now
1:26:20Run the game and see that it's fine now
1:26:20Run the game and see that it's fine now
1:26:20Run the game and see that it's fine now
1:26:48Q&A
🗩
1:26:48Q&A
🗩
1:26:48Q&A
🗩
1:27:34greenish__ I think you should be searching for MaxFramesSinceTouched instead of MinFramesSinceTouched
🗪
1:27:34greenish__ I think you should be searching for MaxFramesSinceTouched instead of MinFramesSinceTouched
🗪
1:27:34greenish__ I think you should be searching for MaxFramesSinceTouched instead of MinFramesSinceTouched
🗪
1:27:49handmade_particles.cpp: Make GetOrCreateParticleSystem() test on the MaxFramesSinceTouched
1:27:49handmade_particles.cpp: Make GetOrCreateParticleSystem() test on the MaxFramesSinceTouched
1:27:49handmade_particles.cpp: Make GetOrCreateParticleSystem() test on the MaxFramesSinceTouched
1:28:21gene_victor So was the problem that the transient memory vaporized per frame, while the particle cache needs to stay across frame?
🗪
1:28:21gene_victor So was the problem that the transient memory vaporized per frame, while the particle cache needs to stay across frame?
🗪
1:28:21gene_victor So was the problem that the transient memory vaporized per frame, while the particle cache needs to stay across frame?
🗪
1:31:15snoringtortoise Not sure if this has been answered on a previous stream (still trying to catch up). When you introduced the threading model, you mentioned that we would want one thread per core, but since the OS creates threads for us (so helpful) for things like audio, does it matter then that we end up with more threads than cores?
🗪
1:31:15snoringtortoise Not sure if this has been answered on a previous stream (still trying to catch up). When you introduced the threading model, you mentioned that we would want one thread per core, but since the OS creates threads for us (so helpful) for things like audio, does it matter then that we end up with more threads than cores?
🗪
1:31:15snoringtortoise Not sure if this has been answered on a previous stream (still trying to catch up). When you introduced the threading model, you mentioned that we would want one thread per core, but since the OS creates threads for us (so helpful) for things like audio, does it matter then that we end up with more threads than cores?
🗪
1:33:36chibin Do you know if he fully swapped out of emacs?
🗪
1:33:36chibin Do you know if he fully swapped out of emacs?
🗪
1:33:36chibin Do you know if he fully swapped out of emacs?
🗪
1:34:06Demo and plug (in-development) 4coder features
1:34:06Demo and plug (in-development) 4coder features
1:34:06Demo and plug (in-development) 4coder features
1:41:17Wrap it up
🗩
1:41:17Wrap it up
🗩
1:41:17Wrap it up
🗩