Open mvaligursky opened 4 years ago
suggestion by @slimbuck regarding storing morph targets in smaller space:
Actually, having recently worked with RGBE format for images, I wonder whether you couldn't do exactly the same with position/normal data? You can see pack/unpack implemented at https://github.com/slimbuck/engine/blob/hdr-parser/src/graphics/program-lib/chunks/reproject.frag#L55
Note: Half float precision has been implemented now.
on iOS with OS version prior to about November 2019, half textures can be used as render targets / textures, but data cannot be uploaded to those textures. At the moment this makes morphing to not using texture based morphing on those devices. We could considering initializing those textures by rendering to them instead (encode uv as position, value to be written as 3 x float data, and render to it.
on iOS with OS version prior to about November 2019, half textures can be used as render targets / textures, but data cannot be uploaded to those textures. At the moment this makes morphing to not using texture based morphing on those devices. We could considering initializing those textures by rendering to them instead (encode uv as position, value to be written as 3 x float data, and render to it.
This is no longer the case: https://github.com/playcanvas/engine/pull/2988
There is a need currently to call user callbacks during glb loading, to allow users to access custom glb data.
When this is implemented, implement these addition features for morph targets:
user to specify morph preference (attribute based vs texture based) - perhaps by indicating how many concurrent morph targets should be supported, or by directly selecting the rendering path.- Non longer relevant as vertex attribute based solution was removed in engine V2 https://github.com/playcanvas/engine/pull/6319allow user to specify precision of storage of morph targets (could be used for both attributes and textures if supported). Currently it's all stored as floats, but we could consider using half / short / byte storage.We have an option for this when the glb is loaded dynamically: morphPreferHighPrecision