Commit Graph

1097 Commits

Author SHA1 Message Date
rdb 7cbdd3b6c4 gobj: release GIL for (un)compress_ram_image 2018-04-04 21:36:26 +02:00
rdb e9ae7dcc40 Use vector_uchar instead of string for binary network/file data
This distinction allows us to better support Python 3, since it will raise exceptions when trying to put arbitrary binary data in a str object.

This also adds some convenience functions for efficiently initializing a Datagram or PTA_uchar from a vector_uchar.
2018-04-02 23:17:14 +02:00
Sam Edwards 9dd37e9dbc general: Add guards to ensure proper BUILDING_ macros defined
This is designed to sanity-check the buildsystem, ensuring that the
expected BUILDING_ macros are defined at the expected time. It
also helps catch cases where the wrong BUILDING_/EXPCL_ macros
are used.
2018-03-25 13:17:52 -06:00
Sam Edwards 2031409a6e gobj: Fix missing include 2018-03-18 00:27:05 -06:00
rdb 9638eb47eb Add support for geometry with adjacency information
Example code: https://gist.github.com/rdb/7cebb8941b962c59d5a092048efb3855
2018-03-01 21:20:19 +01:00
rdb e301e5fe5e android: fix various compilation errors 2018-01-29 19:36:51 +01:00
rdb fe3dab192f gobj: slightly more efficient string handling in Shader::make() 2018-01-15 23:27:46 +01:00
rdb ba9ea065e4 gobj: performance improvement for CPU animation
In particular it seems that decomposition is slow, so the code to handle the transformation of the normal column now tries harder to avoid it, especially in the case of a scale of 1.

Also see #222
2018-01-08 21:33:32 +01:00
rdb 39abc66025 gobj: reduce unnecessary use of threading primitives in constructors 2017-12-28 00:20:59 +01:00
rdb 540122e703 gobj: fix crash with ShaderBuffer 2017-12-24 12:41:52 +01:00
rdb f0b21ee969 Support old Python 2 buffer protocol in PTA and Texture ram_image
This enables passing eg. str and array.array objects in Python 2
2017-12-20 01:23:26 +01:00
rdb 9dcfcbf5fa texture: support store() on more component types (incl. sRGB)
This changes behaviour for sRGB textures, which weren't previously converting to the correct color space.

Also add unit tests for storing to PNMImage.

Closes: #212
2017-12-19 20:02:49 +01:00
rdb e9a50c8898 texture: fix get_clear_data() return type, make it work with sRGB 2017-12-19 19:27:36 +01:00
rdb 348b1c344d texture: support uint/float/half/sRGB textures in TexturePeeker 2017-12-19 18:44:18 +01:00
rdb 193e4b5f59 interrogate: clean py_panda.h; use macros to access Dtool_PyInstDef 2017-12-12 23:03:38 +01:00
rdb 2e20a0f16e Implement awaitable thread-safe future for async operations
This introduces AsyncFuture as a new base class of AsyncTask.  It's modelled after asyncio's Future class, except that it is thread-safe and you can use result() to block the current thread waiting for the future to finish (of course this is not necessary for use with coroutines).

AsyncFuture should be used for any operation that finishes in the future, to get the benefit of awaitability within coroutines as well as a standard interface for querying status and results of the operation as well as cancelling it.  As such, it's been implemented in various places, including texture.prepare() and win.trigger_copy().

Note that AsyncFuture is intended to be used *once*; it cannot be used more than once.  As an example of how this works, tex.prepare() will return the same future as long as the prepare isn't complete, but when it is done, subsequent calls to tex.prepare() will return a new future.
2017-12-04 22:25:28 +01:00
rdb 69b3468b2c interrogate: more improvements to seq/map wrappers
Gets rid of properties defined as both MAKE_SEQ_PROPERTY/MAKE_MAP_PROPERTY, which are just a bad idea. Instead, adds a way for map properties to define a separate "keys" interface.

Fixes: #203
2017-11-27 17:29:50 +01:00
rdb 001804113a ShaderGenerator: make colorscale/texture blending match FFP better
A notable change is that the color scale is now applied *before* texture blending, matching the FFP.  If this breaks anything, we might want to add a configuration option for this.
This also implements the remaining combine modes, CM_dot3_rgb and CM_dot3_rgba, and fixes the broken CM_subtract mode (which currently worked the same way as CM_add).

Fixes: #189
2017-11-16 15:58:13 +01:00
rdb 1b1d80cd27 More thoroughly fix issues with pickling Panda objects in Python 3
This also adds DatagramBuffer, a class for writing datagrams to memory and reading them from there again.
2017-11-08 00:02:35 +01:00
rdb dd2806c8bd Mark constructors 'explicit' for which coercion makes no sense 2017-11-06 19:47:38 +01:00
rdb 410049fd4b Improvements for ShaderGenerator-based programs:
* Disable state munger, which isn't needed
 * Reflect updates to TextureStage properties (Fixes #178)
 * Also respect combine mode and rgb scale changes
 * Allow rehashing and clearing generated shader cache

State munger is now disabled whenever any shader is applied.  Panda assumes that any custom shader will apply color scale by itself.
2017-10-18 11:16:29 +02:00
rdb 0db3d27247 ShaderGenerator: fix updating color of combine stages with CS_constant
This also changes the function of TextureStage::uses_color(), which no longer incorporate TextureStage::involves_color_scale()

Fixes: #177
2017-10-15 17:06:59 +02:00
rdb 51d948a7fa Support compilation for Python 3.7 2017-10-13 12:40:47 +02:00
rdb bf190f7306 interrogate: support MAKE_MAP_PROPERTY 2017-10-09 00:02:46 +02:00
rdb 85a9cdd052 Add a way to get access to OpenGL texture index 2017-10-05 17:34:26 +02:00
rdb 4fae81947e Fix regression (since 6f8b379) causing crash in flattening edge case 2017-08-07 23:00:28 +02:00
rdb d1c34c3360 interrogate: support static properties 2017-08-07 22:04:56 +02:00
rdb f79fbf25c3 ShaderGenerator: big overhaul, don't generate more shaders than needed 2017-07-10 21:55:27 +02:00
rdb 925ce854d0 general: make DO_MEMORY_USAGE setting not change ABI compatibility 2017-07-10 19:50:09 +02:00
rdb 48c811e112 cull: remove GeomMunger stored on CullableObject 2017-07-03 11:47:59 +02:00
rdb 511b0c10e5 ShaderGenerator: don't generate a shader per Material 2017-06-22 13:35:46 +02:00
rdb b41496b17a Fix texpad/texpix inputs not updating (fixes CommonFilters resize issue) 2017-06-20 19:15:12 +02:00
rdb e15cfd74e8 Prevent assertion when calculating bounds for geom without vertices 2017-05-13 21:40:59 +02:00
rdb 6f8b379bda Big patch full of performance improvements
This particularly benefits applications with a lot of nodes.
2017-04-03 01:41:23 +02:00
rdb d8066e19b1 Fix assertion when using Texture.load_sub_image to load entire image 2017-03-22 22:42:21 +01:00
rdb 64a7fbab87 glgsg: fix assertion encountered when trying to use pointer textures
Fixes LP 990089
2017-03-10 23:01:11 +01:00
rdb 4f299fa71f Fix compilation when building without threads enabled 2017-03-09 14:31:07 +01:00
rdb 72262ea15a Fix compiler issues on Windows 2017-02-21 21:38:46 +01:00
rdb 8ec4da2824 Compile fixes for compilers that don't support all C++11 features 2017-02-21 02:45:30 +01:00
rdb edb83fe89a Various optimizations to reduce performance overhead of rendering 2017-02-21 02:20:06 +01:00
rdb 8c914a2855 Work towards ABI stability wrt allocation. Let MemoryHook take advantage of dlmalloc's internal bookkeeping. 2017-02-17 13:02:01 +01:00
rdb 2acde88695 New alignment code to hopefully fix the alignment issues 2017-02-10 03:01:32 +01:00
rdb 4ed199cece Fix various compile warnings and a few code consistency issues 2017-01-09 20:36:53 +01:00
Sam Edwards ea2305de70 general: Fix missing includes. 2016-12-26 18:11:03 -07:00
rdb e8fbd2f9da Fix potential crash in shader preprocess code 2016-12-21 18:14:46 +01:00
rdb 4b5c317160 Improve shader caching; cache result of preprocess if cache-generated-shaders is set 2016-12-19 22:26:16 +01:00
rdb 34068dc0c1 Implement support for SSBOs 2016-12-13 21:22:17 +01:00
rdb 23645cc407 Fix DDS load crash with certain formats; support R16, RG16, R32, RG32 2016-12-13 21:00:11 +01:00
rdb 9eb04a533d More texture load/store performance optimisations 2016-12-09 01:41:32 +01:00
rdb 6dc6b05409 Merge remote-tracking branch 'origin/release/1.9.x' 2016-12-05 02:01:44 +01:00