Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-08-17Cleanup: sort CMake path listsCampbell Barton
2020-08-08Cleanup: use array syntax for sizeof with fixed valuesCampbell Barton
Also order sizeof(..) first to promote other values to size_t.
2020-08-07Cleanup: use C++ style casts in various placesJacques Lucke
2020-08-07Cleanup: pass arrays const where possibleCampbell Barton
2020-08-07Cleanup: declare arrays arrays where possibleCampbell Barton
2020-08-07Cleanup: Clang-Tidy else-after-return fixesSybren A. Stüvel
This addresses warnings from Clang-Tidy's `readability-else-after-return` rule. This should be the final commit of the series of commits that addresses this particular rule. No functional changes.
2020-08-07Code Style: use "#pragma once" in some newer headersJacques Lucke
Those were missing from the previous commit, because these headers only exist in the `master` and not in the `blender-v2.90-release` branch.
2020-08-07Merge branch 'blender-v2.90-release' into masterJacques Lucke
2020-08-07Code Style: use "#pragma once" in source directoryJacques Lucke
This replaces header include guards with `#pragma once`. A couple of include guards are not removed yet (e.g. `__RNA_TYPES_H__`), because they are used in other places. This patch has been generated by P1561 followed by `make format`. Differential Revision: https://developer.blender.org/D8466
2020-08-02Particles: new Age Reached Event, Kill Particle and Random Float nodeJacques Lucke
The hardcoded age limit is now gone. The behavior can be implemented with an Age Reached Event and Kill Particle node. Other utility nodes to handle age limits of particles can be added later. Adding an Age Limit attribute to particles on birth will be useful for some effects, e.g. when you want to control the color or size of a particle over its life time. The Random Float node takes a seed currently. Different nodes will produce different values even with the same seed. However, the same node will generate the same random number for the same seed every time. The "Hash" of a particle can be used as seed. Later, we'd want to have more modes in the node to make it more user friendly. Modes could be: Per Particle, Per Time, Per Particle Per Time, Per Node Instance, ... Also a Random Vector node will be useful, as it currently has to be build using three Random Float nodes.
2020-08-01Particles: support custom particle events in solverJacques Lucke
Previously, there were only particle-birth and time-step events. Now the solver can handle custom events. On the user level this does not change anything yet. This feature of the solver will be used by an upcoming Age Reached Event node and possibly others. When this node exists, I can finally remove the hardcoded maximum particle age.
2020-07-29Particles: rename Size attribute to RadiusJacques Lucke
Doing this change for consistency with the point cloud attributes.
2020-07-29Particles: add Size attributeJacques Lucke
2020-07-28Cleanup: class -> structJacques Lucke
2020-07-28Particles: initial support for the Time input nodeJacques Lucke
2020-07-27Particles: initial support for events and actionsJacques Lucke
The following nodes work now (although things can still be improved of course): Particle Birth Event, Praticle Time Step Event, Set Particle Attribute and Execute Condition. Multiple Set Particle Attribute nodes can be chained using the "Execute" sockets. They will be executed from left to right.
2020-07-25Cleanup: avoid using namespace name in many casesJacques Lucke
2020-07-25Particles: improve emitter when object is animatedJacques Lucke
2020-07-25Simulation: cleanup dna dataJacques Lucke
2020-07-24Particles: initial particle birth actionJacques Lucke
A particle action is some function that is triggered by some event. Right now, users cannot control this. There is just a randomize-velocity on-birth action. So the direction of spawned particles is slightly randomized now. This also adds a new integer attribute called "Hash" which is useful for a number of things. Mainly for generating random numbers for a specific particle. The ID of a particle is not necessarily a good source of randomness.
2020-07-24BLI: add MultiValueMapJacques Lucke
This is a convenience wrapper for `Map<Key, Vector<Value>>`. It does not provide any performance benefits (yet). I need this kind of map in a couple of places and before I was duplicating the lookup logic in many places.
2020-07-24Try to fix build errorJacques Lucke
Not sure if this is the correct fix, because I can't reproduce the error.
2020-07-24Particles: simulate partial time steps on newly emitted particlesJacques Lucke
2020-07-23Particles: spawn particles on mesh surfaceJacques Lucke
2020-07-23Cleanup: unify naming between different spansJacques Lucke
2020-07-23Particles: improve mesh emitterJacques Lucke
Particles are now emitted from vertices of the mesh.
2020-07-23Simulation: add depsgraph relations for ids referenced by node treeJacques Lucke
I'll really have to refactor `ntreeUpdateTree` soon to avoid scanning all node trees multiple times.
2020-07-22Simulation: add todo commentJacques Lucke
2020-07-22Simulation: move responsibility of updating persistent data handlesJacques Lucke
This solver should not be responsible for updating the handles.
2020-07-22Simulation: fix memory leakJacques Lucke
2020-07-22Simulation: improve depsgraph integrationJacques Lucke
A simulation data block has an embedded node tree, which requires special handling in a couple of places. Some of those places were missing beforehand. This also adds a relation to make sure that the simulation is evaluated after animations on the embedded node tree are evaluated.
2020-07-22Particles: give emitter its own stateJacques Lucke
High quality emitters need to maintain state themselves. For example, this it needs to remember when it spawned the last particle. This is especially important when the birth rate is changing over time. Otherwise, there will be very visible artifacts. It is quite likely that other components of the simulation need their own state as well. Therefore, I refactored the `SimulationState` type a bit, to make it more extensible. Instead of using hardcoded type numbers, a string is used to identify the state type. Also, instead of having switch statements in many places, there is a new `SimulationStateType` that encapsulates information about how a specific state is created/freed/copied/... I removed the integration with the point cache for now, because it was not used anyway in it's current state.
2020-07-21Particles: initial object socket and emitter node supportJacques Lucke
Object sockets work now, but only the new Object Transforms and the Particle Mesh Emitter node use it. The emitter does not actually use the mesh surface yet. Instead, new particles are just emitted around the origin of the object. Internally, handles to object data blocks are passed around in the network, instead of raw object pointers. Using handles has a couple of benefits: * The caller of the function has control over which handles can be resolved and therefore limit access to specific data. The set of data blocks that is accessed by a node tree should be known statically. This is necessary for a proper integration with the dependency graph. * When the pointer to an object changes (e.g. after restarting Blender), all handles are still valid. * When an object is deleted, the handle is invalidated without causing crashes. * The handle is just an integer that can be stored per particle and can be cached easily. The mapping between handles and their corresponding data blocks is stored in the Simulation data block.
2020-07-20Particles: support removing particles during the simulationJacques Lucke
This still cannot be controlled by the user. Currently, all particles are killed after two seconds
2020-07-20Refactor: Update integer type usageJacques Lucke
This updates the usage of integer types in code I wrote according to our new style guides. Major changes: * Use signed instead of unsigned integers in many places. * C++ containers in blenlib use `int64_t` for size and indices now (instead of `uint`). * Hash values for C++ containers are 64 bit wide now (instead of 32 bit). I do hope that I broke no builds, but it is quite likely that some compiler reports slightly different errors. Please let me know when there are any errors. If the fix is small, feel free to commit it yourself. I compiled successfully on linux with gcc and on windows.
2020-07-19Particles: Make it easier to add attributes internallyJacques Lucke
2020-07-19Particles: Emit particles over timeJacques Lucke
This adds a basic internal emitter for every particle simulation. The emitter cannot be controlled by the user yet. That will come next.
2020-07-18Simulation: cleanup deduplicating attribute input nodesJacques Lucke
2020-07-18Simulation: cleanup how data inputs are handledJacques Lucke
2020-07-18Simulation: deduplicate code that finds particle simulation namesJacques Lucke
2020-07-17Simulation: extract node tree parsing code to separate fileJacques Lucke
2020-07-17Simulation: separate code from node tree parsing and solverJacques Lucke
2020-07-17Refactor: move ParticleFunction to separate fileJacques Lucke
2020-07-17Cleanup: avoid static initialization order issues when accessing CPPTypesJacques Lucke
Instead of depending on static initialization order of globals use static variables within functions. Those are initialized on first use. This is every so slighly less efficient, but avoids a full class of problems.
2020-07-17Simulation: move initial simulation code from bf_blenkernel to bf_simulationJacques Lucke
I removed bf_blenkernel from `nodes/CMakeLists.txt` again (added it yesterday), because now this was causing me unresolved symbol errors... Without it, cmake seems to link the libraries bf_simulation, bf_blenkernel and bf_nodes in the right order. Not sure if that is just luck or if it is guaranteed. It was possible to fix the issue by using cmakes `LINK_INTERFACE_MULTIPLICITY`, but that is probably bad style.
2020-07-16Simulation: rename bf_physics to bf_simulationJacques Lucke
Also see {rB9363c4de0635394548fa2eb8d205581313029775}.
2020-07-16Simulation: Change BPH prefix to SIMJacques Lucke
In a previous commit the `physics` folder has been renamed to `simulation`. This commit updates the function/file prefix accordingly.
2020-07-16Simulation: Rename `physics` directory to `simulation`Jacques Lucke
Function names will be updated in a separate commit. This will be the place for the new particle system and other code related to the Simulation data block. We don't want to have all that code in blenkernel. Approved by brecht.