jMonkeyEngine / jMonkeyEngine/jmonkeyengine

Cache and reuse VertexBuffers in MorphTarget

Open
#2,354 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Java
Stars
4.3k
Forks
1.2k
Avg merge
4d 7h
Merged PRs (30d)
14

Description

When the set of active morph targets changes often it keeps reuploading data to the GPU due to:
https://github.com/jMonkeyEngine/jmonkeyengine/blob/8ba6574ef6c2cba463e2f03a87263c4074466e10/jme3-core/src/main/java/com/jme3/anim/MorphControl.java#L313
Because MorphTarget holds FloatBuffers instead of VertexBuffers that could simply be bound instead of overwritten:
https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/mesh/MorphTarget.java#L13

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the morph-target update path at jme3-core/src/main/java/com/jme3/anim/MorphControl.java around line 313, then inspect jme3-core/src/main/java/com/jme3/scene/mesh/MorphTarget.java. Trace how FloatBuffers are currently uploaded when active targets change and determine how reuse should avoid repeated GPU uploads. Done means changing active morph targets reuses cached VertexBuffers rather than reuploading the same data.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
computer-graphics, game-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.