Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "stdafx.h"

#include "Headers/ParticleSource.h"

#include "Core/Headers/Kernel.h"
#include "Platform/Video/Headers/GFXDevice.h"

namespace Divide {

ParticleSource::ParticleSource(GFXDevice& context)
    : ParticleSource(context, 0)
{
}

ParticleSource::ParticleSource(GFXDevice& context, F32 emitRate)
    : _emitRate(emitRate),
      _context(context)
{
}

ParticleSource::~ParticleSource()
{
}

void ParticleSource::emit(const U64 deltaTime, std::shared_ptr<ParticleData> p) {
    ParticleData& data = *p;

    const F32 dt = Time::MicrosecondsToSeconds<F32>(deltaTime);
    const U32 maxNewParticles = to_U32(dt * _emitRate);
    const U32 startID = data.aliveCount();
    const U32 endID = std::min(startID + maxNewParticles, data.totalCount() - 1);

    TaskHandle generateTask = CreateTask(_context.parent().platformContext(), DELEGATE_CBK<void, const Task&>());
    for (std::shared_ptr<ParticleGenerator>& gen : _particleGenerators) {
        gen->generate(generateTask, deltaTime, data, startID, endID);
    }
    generateTask.startTask(Task::TaskPriority::HIGH);
    generateTask.wait();

    for (U32 i = startID; i < endID; ++i) {
        p->wake(i);
    }
}
};

Commits for Divide-Framework/trunk/Source Code/Dynamics/Entities/Particles/ParticleSource.cpp

Diff revisions: vs.
Revision Author Commited Message
909 Diff Diff IonutCava picture IonutCava Thu 29 Jun, 2017 23:57:18 +0000

[Ionut]
- Rework RenderTarget class
— RTAttachment now deal with textures directly
— RT size needs to be specified upfront
- Application class is no longer a Singleton but passed around in the PlatformContext

890 Diff Diff IonutCava picture IonutCava Sun 14 May, 2017 20:54:59 +0000

[Ionut]
- Add pre-compiled header support
- Initial code for per-stage tessellation computation

867 Diff Diff IonutCava picture IonutCava Mon 20 Feb, 2017 17:01:12 +0000

[IonutCava]
- Rename to_XNN and to_const_XNN functions to reflect the target data type they are converting to.
- Cleanup Angle namespace and remove all “inDegrees” parameters from rotation functions. Use aliases to differentiate between Degree and Radian parameters.
- Profile guided optimizations.

842 Diff Diff IonutCava picture IonutCava Wed 01 Feb, 2017 17:25:15 +0000

[IonutCava]
- Start to implement scripting support via ChaiScript: http://chaiscript.com/
- Cleanup DELEGATE_CBK alias

811 Diff Diff IonutCava picture IonutCava Wed 11 Jan, 2017 17:26:49 +0000

[IonutCava]
- Fix some threadpool cleanup bugs
- Fix terrain rendering (except underwater caustics)
- Fix terrain loading
- Fix terrain unloading

671 Diff Diff IonutCava picture IonutCava Fri 08 Apr, 2016 16:26:49 +0000

[Ionut]
- Custom memory allocation system part 1:
— Add http://www.codeproject.com/Articles/1089905/A-Custom-STL-std-allocator-Replacement-Improves-Pe
— Add custom allocators to strings and vectors
— Add custom allocators to a few test classes
— No support for aligned memory yet, so vec4<F32> and mat4<F32> vectors use the old allocation system
- Replace more std::async call with our custom task system

631 Diff Diff IonutCava picture IonutCava Sun 24 Jan, 2016 20:28:21 +0000

[IonutCava]
- Fix and optimize particle rendering system
- Temporarily disable Z_PRE_PASS system for testing
- Improve thread pool destruction system a bit
- Fix texture loading when used as fb attachment
- Forward+ renderer now takes the entire light buffer (no need to split up by light type)
- Start work on occlusion culling fixes:
— ToDo: Take into account batching system
— Fix gl_DrawIDARB usage

542 Diff Diff IonutCava picture IonutCava Thu 29 Oct, 2015 23:44:59 +0000

[IonutCava]
- Improved multi-threaded culling
- Increased nodeBuffer size to avoid different render stages to override each-other’s data and wait for locks
- Added a indirect command buffer per render stage

541 Diff Diff IonutCava picture IonutCava Thu 29 Oct, 2015 17:03:27 +0000

[IonutCava]
- Initial work on multi-threading the main loop (experimental. unstable):
— Multi-threaded frustum culling
— Multi-threaded particle update system

521 IonutCava picture IonutCava Tue 06 Oct, 2015 16:12:58 +0000

[IonutCava]
- Performance improvements:
— Upload an entire animation’s bone data instead of the current frame’s data and bind the appropriate frame’s transform range.
-— Sacrifices VRAM but reduces the number of RAM->VRAM uploads for animated characters
— Some refactoring in the particle code (emitter, generators, updaters, etc)
- Bugfix:
— Default texture wrap mode to REPEAT instead of CLAMP as ASSIMP seems to be failing at reading texture wrap modes and REPEAT is a safer bet.