mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 16:20:11 -04:00
Merge branch 'release/1.10.x' into incoming
This commit is contained in:
commit
1739cef318
@ -34,6 +34,7 @@ This is a list of all the people who are contributing financially to Panda3D. I
|
|||||||
* Kyle Roach
|
* Kyle Roach
|
||||||
* Brian Lach
|
* Brian Lach
|
||||||
* C0MPU73R
|
* C0MPU73R
|
||||||
|
* Maxwell Dreytser
|
||||||
|
|
||||||
## Backers
|
## Backers
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Installing Panda3D
|
|||||||
==================
|
==================
|
||||||
|
|
||||||
The latest Panda3D SDK can be downloaded from
|
The latest Panda3D SDK can be downloaded from
|
||||||
[this page](https://www.panda3d.org/download/sdk-1-10-9/).
|
[this page](https://www.panda3d.org/download/sdk-1-10-10/).
|
||||||
If you are familiar with installing Python packages, you can use
|
If you are familiar with installing Python packages, you can use
|
||||||
the following command:
|
the following command:
|
||||||
|
|
||||||
@ -64,8 +64,8 @@ depending on whether you are on a 32-bit or 64-bit system, or you can
|
|||||||
[click here](https://github.com/rdb/panda3d-thirdparty) for instructions on
|
[click here](https://github.com/rdb/panda3d-thirdparty) for instructions on
|
||||||
building them from source.
|
building them from source.
|
||||||
|
|
||||||
- https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-win64.zip
|
- https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-win64.zip
|
||||||
- https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-win32.zip
|
- https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-win32.zip
|
||||||
|
|
||||||
After acquiring these dependencies, you can build Panda3D from the command
|
After acquiring these dependencies, you can build Panda3D from the command
|
||||||
prompt using the following command. Change the `--msvc-version` option based
|
prompt using the following command. Change the `--msvc-version` option based
|
||||||
@ -136,7 +136,7 @@ macOS
|
|||||||
-----
|
-----
|
||||||
|
|
||||||
On macOS, you will need to download a set of precompiled thirdparty packages in order to
|
On macOS, you will need to download a set of precompiled thirdparty packages in order to
|
||||||
compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-mac.tar.gz).
|
compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.10/panda3d-1.10.10-tools-mac.tar.gz).
|
||||||
|
|
||||||
After placing the thirdparty directory inside the panda3d source directory,
|
After placing the thirdparty directory inside the panda3d source directory,
|
||||||
you may build Panda3D using a command like the following:
|
you may build Panda3D using a command like the following:
|
||||||
|
@ -1,3 +1,36 @@
|
|||||||
|
----------------------- RELEASE 1.10.10 -----------------------
|
||||||
|
|
||||||
|
This release fixes assorted, mostly very minor bugs.
|
||||||
|
|
||||||
|
* Round refresh rates when choosing display mode on macOS (#1144)
|
||||||
|
* Vectors now support floor division
|
||||||
|
* It is now possible to use round(), ceil() and floor() with vector types
|
||||||
|
* Add RenderState::get_unused_states()
|
||||||
|
* Fix assertion error in RenderState::get_num_unused_states()
|
||||||
|
* Fix Assimp loader not importing normal vectors correctly (#1163)
|
||||||
|
* Fix error when trying to render DirectGUI in offscreen mode (#1174)
|
||||||
|
* Fix crash when resizing window in multi-window DirectX 9 application (#1167)
|
||||||
|
* Fixes to enable compilation with recent OpenEXR and FFMpeg versions
|
||||||
|
* Fix draw callback being called twice if cull callback calls upcall()
|
||||||
|
* Improve error message when display module fails to load
|
||||||
|
* Fix writing/reading BitArray to/from bam files on 64-bit systems (#1181)
|
||||||
|
* evdev input devices (such as gamepads) are now supported in FreeBSD as well
|
||||||
|
* Panda no longer tries to compress buffer textures when compression is enabled
|
||||||
|
* Fix Geom::make_lines_in_place() (& points, patches) leaving invalid state
|
||||||
|
* Fix memory leak when cleaning up FilterManager (#1166)
|
||||||
|
* Fix memory leak deleting multisample OpenGL FBOs (#1166)
|
||||||
|
* Fix auto-binding of SSBOs sometimes causing overlapping bindings (#1176)
|
||||||
|
* PSSMCameraRig::update() now accepts a camera node directly
|
||||||
|
* Support copying depth buffer for 32-bit depth with 8-bit stencil (#1142)
|
||||||
|
* Prevent trying to copy depth from non-depth buffer in OpenGL renderer (#1142)
|
||||||
|
* Fixes to format selection for OpenGL renderbuffers (#1137, #1141)
|
||||||
|
* gl-depth-zero-to-one is now supported in OpenGL ES 2+ (if driver supports)
|
||||||
|
* Maya models can contain more than three eggObjectTypes (#1134)
|
||||||
|
* Fix black screen on Linux when switching fullscreen without a WM active
|
||||||
|
* Fix Linux crash when trying to load a directory instead of a file (#1140)
|
||||||
|
* Fix crash when loading an invalid font
|
||||||
|
* Fix a very obscure unintended DirectGUI behavior change in 1.10.9
|
||||||
|
|
||||||
------------------------ RELEASE 1.10.9 -----------------------
|
------------------------ RELEASE 1.10.9 -----------------------
|
||||||
|
|
||||||
This is a bugfix release which addresses some severe issues on macOS, as well as
|
This is a bugfix release which addresses some severe issues on macOS, as well as
|
||||||
|
@ -371,7 +371,7 @@ static PyObject *Dtool_MutableSequenceWrapper_insert(PyObject *self, PyObject *a
|
|||||||
return PyErr_Format(PyExc_TypeError, "%s.insert() does not support negative indices", wrap->_base._name);
|
return PyErr_Format(PyExc_TypeError, "%s.insert() does not support negative indices", wrap->_base._name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return wrap->_insert_func(wrap->_base._self, (ssize_t)std::max(index, (Py_ssize_t)0), PyTuple_GET_ITEM(args, 1));
|
return wrap->_insert_func(wrap->_base._self, (size_t)std::max(index, (Py_ssize_t)0), PyTuple_GET_ITEM(args, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,7 +60,7 @@ __setstate__(PyObject *state) {
|
|||||||
_this->set_name(std::string(data, len));
|
_this->set_name(std::string(data, len));
|
||||||
|
|
||||||
_this->set_respect_prev_transform(PyTuple_GET_ITEM(state, 1) != Py_False);
|
_this->set_respect_prev_transform(PyTuple_GET_ITEM(state, 1) != Py_False);
|
||||||
size_t num_colliders = (ssize_t)PyLong_AsLong(PyTuple_GET_ITEM(state, 2));
|
size_t num_colliders = (size_t)PyLong_AsLong(PyTuple_GET_ITEM(state, 2));
|
||||||
|
|
||||||
for (size_t i = 0; i < num_colliders; ++i) {
|
for (size_t i = 0; i < num_colliders; ++i) {
|
||||||
NodePath *collider = (NodePath *)DtoolInstance_VOID_PTR(PyTuple_GET_ITEM(state, i * 2 + 3));
|
NodePath *collider = (NodePath *)DtoolInstance_VOID_PTR(PyTuple_GET_ITEM(state, i * 2 + 3));
|
||||||
|
@ -231,10 +231,12 @@ correct_time(double time) {
|
|||||||
// backward in the high-precision clock, since this does appear to happen
|
// backward in the high-precision clock, since this does appear to happen
|
||||||
// in a threaded environment.
|
// in a threaded environment.
|
||||||
|
|
||||||
clock_cat.debug()
|
if (clock_cat.is_debug()) {
|
||||||
<< "Clock error detected; elapsed time " << time_delta
|
clock_cat.debug()
|
||||||
<< "s on high-resolution counter, and " << tod_delta
|
<< "Clock error detected; elapsed time " << time_delta
|
||||||
<< "s on time-of-day clock.\n";
|
<< "s on high-resolution counter, and " << tod_delta
|
||||||
|
<< "s on time-of-day clock.\n";
|
||||||
|
}
|
||||||
++_error_count;
|
++_error_count;
|
||||||
|
|
||||||
// If both are negative, we call it 0. If one is negative, we trust the
|
// If both are negative, we call it 0. If one is negative, we trust the
|
||||||
|
@ -120,6 +120,8 @@ typedef char GLchar;
|
|||||||
#define GL_ONE_MINUS_SRC1_COLOR GL_ONE_MINUS_SRC1_COLOR_EXT
|
#define GL_ONE_MINUS_SRC1_COLOR GL_ONE_MINUS_SRC1_COLOR_EXT
|
||||||
#define GL_SRC1_ALPHA GL_SRC1_ALPHA_EXT
|
#define GL_SRC1_ALPHA GL_SRC1_ALPHA_EXT
|
||||||
#define GL_ONE_MINUS_SRC1_ALPHA GL_ONE_MINUS_SRC1_ALPHA_EXT
|
#define GL_ONE_MINUS_SRC1_ALPHA GL_ONE_MINUS_SRC1_ALPHA_EXT
|
||||||
|
#define GL_LOWER_LEFT GL_LOWER_LEFT_EXT
|
||||||
|
#define GL_ZERO_TO_ONE GL_ZERO_TO_ONE_EXT
|
||||||
|
|
||||||
#define GL_DEBUG_OUTPUT_SYNCHRONOUS GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR
|
#define GL_DEBUG_OUTPUT_SYNCHRONOUS GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR
|
||||||
#define GL_DEBUG_TYPE_PERFORMANCE GL_DEBUG_TYPE_PERFORMANCE_KHR
|
#define GL_DEBUG_TYPE_PERFORMANCE GL_DEBUG_TYPE_PERFORMANCE_KHR
|
||||||
|
@ -1050,6 +1050,30 @@ GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size,
|
|||||||
#endif
|
#endif
|
||||||
#endif /* GL_EXT_buffer_storage */
|
#endif /* GL_EXT_buffer_storage */
|
||||||
|
|
||||||
|
#ifndef GL_EXT_clear_texture
|
||||||
|
#define GL_EXT_clear_texture 1
|
||||||
|
typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
|
||||||
|
typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||||||
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
|
GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
|
||||||
|
GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||||||
|
#endif
|
||||||
|
#endif /* GL_EXT_clear_texture */
|
||||||
|
|
||||||
|
#ifndef GL_EXT_clip_control
|
||||||
|
#define GL_EXT_clip_control 1
|
||||||
|
#define GL_LOWER_LEFT_EXT 0x8CA1
|
||||||
|
#define GL_UPPER_LEFT_EXT 0x8CA2
|
||||||
|
#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
|
||||||
|
#define GL_ZERO_TO_ONE_EXT 0x935F
|
||||||
|
#define GL_CLIP_ORIGIN_EXT 0x935C
|
||||||
|
#define GL_CLIP_DEPTH_MODE_EXT 0x935D
|
||||||
|
typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth);
|
||||||
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
|
GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth);
|
||||||
|
#endif
|
||||||
|
#endif /* GL_EXT_clip_control */
|
||||||
|
|
||||||
#ifndef GL_EXT_color_buffer_float
|
#ifndef GL_EXT_color_buffer_float
|
||||||
#define GL_EXT_color_buffer_float 1
|
#define GL_EXT_color_buffer_float 1
|
||||||
#endif /* GL_EXT_color_buffer_float */
|
#endif /* GL_EXT_color_buffer_float */
|
||||||
|
@ -1104,6 +1104,18 @@ reset() {
|
|||||||
_supports_clear_texture = true;
|
_supports_clear_texture = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif !defined(OPENGLES_1)
|
||||||
|
if (has_extension("GL_EXT_clear_texture")) {
|
||||||
|
_glClearTexImage = (PFNGLCLEARTEXIMAGEEXTPROC)
|
||||||
|
get_extension_func("glClearTexImageEXT");
|
||||||
|
|
||||||
|
if (_glClearTexImage == nullptr) {
|
||||||
|
GLCAT.warning()
|
||||||
|
<< "GL_EXT_clear_texture advertised as supported by OpenGL runtime, but could not get pointers to extension function.\n";
|
||||||
|
} else {
|
||||||
|
_supports_clear_texture = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_supports_clear_buffer = false;
|
_supports_clear_buffer = false;
|
||||||
@ -3319,23 +3331,30 @@ reset() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set depth range from zero to one if requested.
|
// Set depth range from zero to one if requested.
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES_1
|
||||||
_use_depth_zero_to_one = false;
|
_use_depth_zero_to_one = false;
|
||||||
_use_remapped_depth_range = false;
|
_use_remapped_depth_range = false;
|
||||||
|
|
||||||
if (gl_depth_zero_to_one) {
|
if (gl_depth_zero_to_one) {
|
||||||
|
#ifndef OPENGLES
|
||||||
|
PFNGLCLIPCONTROLPROC pglClipControl = nullptr;
|
||||||
if (is_at_least_gl_version(4, 5) || has_extension("GL_ARB_clip_control")) {
|
if (is_at_least_gl_version(4, 5) || has_extension("GL_ARB_clip_control")) {
|
||||||
PFNGLCLIPCONTROLPROC pglClipControl =
|
pglClipControl = (PFNGLCLIPCONTROLPROC)get_extension_func("glClipControl");
|
||||||
(PFNGLCLIPCONTROLPROC)get_extension_func("glClipControl");
|
}
|
||||||
|
#else
|
||||||
|
PFNGLCLIPCONTROLEXTPROC pglClipControl = nullptr;
|
||||||
|
if (has_extension("GL_EXT_clip_control")) {
|
||||||
|
pglClipControl = (PFNGLCLIPCONTROLEXTPROC)get_extension_func("glClipControlEXT");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pglClipControl != nullptr) {
|
if (pglClipControl != nullptr) {
|
||||||
pglClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
|
pglClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
|
||||||
_use_depth_zero_to_one = true;
|
_use_depth_zero_to_one = true;
|
||||||
|
|
||||||
if (GLCAT.is_debug()) {
|
if (GLCAT.is_debug()) {
|
||||||
GLCAT.debug()
|
GLCAT.debug()
|
||||||
<< "Set zero-to-one depth using glClipControl\n";
|
<< "Set zero-to-one depth using glClipControl\n";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}/* else if (has_extension("GL_NV_depth_buffer_float")) {
|
}/* else if (has_extension("GL_NV_depth_buffer_float")) {
|
||||||
// Alternatively, all GeForce 8+ and even some AMD drivers support this
|
// Alternatively, all GeForce 8+ and even some AMD drivers support this
|
||||||
|
@ -229,10 +229,10 @@ typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFo
|
|||||||
typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
|
typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
|
||||||
typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
|
typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
|
||||||
typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
|
typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
|
||||||
#endif // OPENGLES_1
|
|
||||||
#ifndef OPENGLES
|
|
||||||
typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
|
typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
|
||||||
typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||||||
|
#endif // OPENGLES_1
|
||||||
|
#ifndef OPENGLES
|
||||||
typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
|
typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
|
||||||
typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
|
typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
|
||||||
typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
|
typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
|
||||||
@ -767,9 +767,11 @@ protected:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES_1
|
||||||
bool _use_depth_zero_to_one;
|
bool _use_depth_zero_to_one;
|
||||||
bool _use_remapped_depth_range;
|
bool _use_remapped_depth_range;
|
||||||
|
#endif
|
||||||
|
#ifndef OPENGLES
|
||||||
PFNGLDEPTHRANGEDNVPROC _glDepthRangedNV;
|
PFNGLDEPTHRANGEDNVPROC _glDepthRangedNV;
|
||||||
#endif
|
#endif
|
||||||
#ifndef OPENGLES_1
|
#ifndef OPENGLES_1
|
||||||
@ -811,7 +813,7 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool _supports_clear_texture;
|
bool _supports_clear_texture;
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES_1
|
||||||
PFNGLCLEARTEXIMAGEPROC _glClearTexImage;
|
PFNGLCLEARTEXIMAGEPROC _glClearTexImage;
|
||||||
PFNGLCLEARTEXSUBIMAGEPROC _glClearTexSubImage;
|
PFNGLCLEARTEXSUBIMAGEPROC _glClearTexSubImage;
|
||||||
#endif
|
#endif
|
||||||
|
@ -310,6 +310,8 @@ get_sort(Thread *current_thread) const {
|
|||||||
* Searches for a node below the referenced node that matches the indicated
|
* Searches for a node below the referenced node that matches the indicated
|
||||||
* string. Returns the shortest match found, if any, or an empty NodePath if
|
* string. Returns the shortest match found, if any, or an empty NodePath if
|
||||||
* no match can be found.
|
* no match can be found.
|
||||||
|
*
|
||||||
|
* The referenced node itself is not considered in the search.
|
||||||
*/
|
*/
|
||||||
NodePath NodePath::
|
NodePath NodePath::
|
||||||
find(const string &path) const {
|
find(const string &path) const {
|
||||||
@ -350,6 +352,8 @@ find_path_to(PandaNode *node) const {
|
|||||||
/**
|
/**
|
||||||
* Returns the complete set of all NodePaths that begin with this NodePath and
|
* Returns the complete set of all NodePaths that begin with this NodePath and
|
||||||
* can be extended by path. The shortest paths will be listed first.
|
* can be extended by path. The shortest paths will be listed first.
|
||||||
|
*
|
||||||
|
* The referenced node itself is not considered in the search.
|
||||||
*/
|
*/
|
||||||
NodePathCollection NodePath::
|
NodePathCollection NodePath::
|
||||||
find_all_matches(const string &path) const {
|
find_all_matches(const string &path) const {
|
||||||
|
@ -18,6 +18,7 @@ classifiers =
|
|||||||
Programming Language :: Python :: 3.7
|
Programming Language :: Python :: 3.7
|
||||||
Programming Language :: Python :: 3.8
|
Programming Language :: Python :: 3.8
|
||||||
Programming Language :: Python :: 3.9
|
Programming Language :: Python :: 3.9
|
||||||
|
Programming Language :: Python :: 3.10
|
||||||
Programming Language :: Python :: Implementation :: CPython
|
Programming Language :: Python :: Implementation :: CPython
|
||||||
Topic :: Games/Entertainment
|
Topic :: Games/Entertainment
|
||||||
Topic :: Multimedia
|
Topic :: Multimedia
|
||||||
|
Loading…
x
Reference in New Issue
Block a user