View Issue Details

IDProjectCategoryView StatusLast Update
0003963The Dark ModGraphicspublic15.02.2017 04:37
ReporterSteveL Assigned To 
PrioritynormalSeveritynormalReproducibilityN/A
Status newResolutionopen 
Product VersionTDM 2.03 
Summary0003963: Make soft particles work with all particles not just entity-based particles.
DescriptionSoft particles 0003878 was set up for particles emitted by an entity using a "particle" render model. Turns out the particle system is more flexible than that and has world particles belonging to idGameLocal that can be emitted with no entity. Need to move a small bit of code from Model_prt to DeclParticle (the accessor fuction SofteningRadius), so that softening works with all particle types. This will also mean that we can remove the #include of Model_local.h from tr_light.cpp.
TagsNo tags attached.

Relationships

related to 0003962 resolvedSteveL Allow scripts to use the World particle system 

Activities

SteveL

SteveL

08.01.2016 19:20

developer   ~0008007

This is more complicated than it first appears. The code in tr_light doesn't know when it's drawing a particle of other types. Smoke particles (the world particles controlled by gameLocal code) don't use a particle-specific render model, they just make a generic render model with no particular type and manually update its verts each frame using methods in idDeclParticle to create them.

Weather particles don't use a particle render model either. They're implemented at a lower level in the renderer front end and they duplicate a load of code from idDeclParticle to do it manually too.

We can test for a weather particle at any stage of rendering using this method: surf->material->GetDeformDecl();

But we don't really need softening for weather particles. They're too small. We can leave its duplicated code in peace.

Is there any reason we can't change smoke particles to use an idRenderModelPrt instead of a generic idRenderModel? idRenderModelPrt is a subclass of idRenderModel and adds a single data member: a pointer to the particle decl.

No, that won't work. Smoke particles use a single render model to hold the quads of all the various smoke particles in the world, which means lots of different particle decl types, not just one.

I'll revert my local changes and suspend this issue I think. It's turning into a major code overhaul for the sake of improving a very rarely-used particle type.

Issue History

Date Modified Username Field Change
08.12.2014 20:43 SteveL New Issue
08.12.2014 20:43 SteveL Status new => assigned
08.12.2014 20:43 SteveL Assigned To => SteveL
08.12.2014 20:44 SteveL Relationship added related to 0003962
08.12.2014 20:45 SteveL Description Updated View Revisions
08.12.2014 20:46 SteveL Description Updated View Revisions
08.12.2014 20:47 SteveL Description Updated View Revisions
08.01.2016 19:20 SteveL Note Added: 0008007
08.01.2016 19:21 SteveL Status assigned => suspended
08.01.2016 19:21 SteveL Target Version TDM 2.04 =>
15.02.2017 04:37 grayman Assigned To SteveL =>
15.02.2017 04:37 grayman Status suspended => new