Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tween null check #45436

Closed
wants to merge 2,540 commits into from
Closed

Tween null check #45436

wants to merge 2,540 commits into from

Conversation

Norrox
Copy link
Contributor

@Norrox Norrox commented Jan 25, 2021

Resolves #45399

akien-mga and others added 30 commits December 17, 2020 13:15
Fix crash parsing a serialized Reference (3.2)
[fbx] Implement ColorIndex for Vertex Colors to ensure they are correct and duplicate vertexes correctly for multiple color attributes.
[3.2] Add a minimap to the GraphEdit
Image::resize_to_po2() now takes an optional p_interpolation parameter
that it passes directly to resize() with default value INTERPOLATE_BILINEAR.

GLES2: call resize_to_po2() with interpolate argument

Call resize_to_po2() in GLES2 rasterizer storage with either
INTERPOLATE_BILINEAR or INTERPOLATE_NEAREST depending on TEXTURE_FLAG_FILTER.

This avoids filtering issues with non power of two pixel art textures.
See #44379
[3.2] Remove any constraints connected to a Bullet body when removing it
[3.2] Add interpolation parameter to resize_to_po2()
The root cause of the issue is that OpenGL ES 2 does not support the `textureCubeLod` function.
There are (optional) extensions to support this, but they don't appear to be exposed with the ES2 renderer (even though the hardware needed to support LOD features are certainly available.)
The existing shim in `drivers/gles2/shaders/cubemap_filter.glsl` just creates a macro:

```
 #define textureCubeLod(img, coord, lod) textureCube(img, coord)
```

But the third parameter of `textureCube` is actually a mip bias, not an absolute mip level.
(And it doesn't seem to work regardless.)
In this specific case, the `cubemap_filter` should only sample from the first level of the "source" panorama cubemap.
In lieu of a method to force a lod level of zero, I've chosen to comment out the switchover from a 2D equirectangular panorama to the cubemap version of the same image, therefore always sampling roughness values from the 2D equirectangular panorama.
This may cause additional artifacts or issues across the seam, but at least it prevents the glaringly obvious black areas.

---

This same issue (no fragment texture LOD support) has rather large repercussions elsewhere too; it means materials with larger cubemap density (i.e. planar or distant objects) will be far rougher than expected.
Since GLES 3 appears to properly support fragment `texture*Lod` functions, switching to the GLES 3 backend would solve this problem.

---

Root cause discovered with help from @kaadmy.
Fix PanoramaSky artifacts on Android/GLES2
Batching - Protection against zero and small sized ninepatches
Fix Variant conversion to float instead of double
These were only put in for the betas, in order to test hypotheses for stalling on Macs. It seems that most of the problems in the Mac editor have been solved by fixing the excessive redraw_requests.

As a result no one has reported any results from these options, but in future we will be able to refer users to try the beta versions, so there is no need to include them in the stable release. Indeed they are only likely to cause confusion.
Remove buffer orphaning options project settings
[3.2] Fix file drag-drop on M1 Macs.
[3.2] Fix the `String::get_base_dir()` logic to properly check for top level directories on Windows
[3.2] Lightness of dynamic objects from Energy BakedLightmapData
[3.2] Use base character advances for outline drawing.
Partially revert change allowing sprite get_rect snapping to be controlled by `pixel_snap` again rather than `transform_snap` (to prevent breaking compatibility). Adds a final `use_camera_snap` project setting to allow snapping viewports as in reduz original PR.
Properly apply auto exposure with FXAA in GLES3
[3.2] Add missing "normalized" accessor property to glTF document
Ninepatch code has a check to prevent use of zero sized textures. This didn't deal properly with animated textures, which use a proxy (link to another texture).

This PR uses a generalised method of getting textures, with built in support for proxy textures and protection against infinite loops.
Batching - fix ninepatch proxy textures (e.g. animated)
akien-mga and others added 10 commits January 20, 2021 10:26
BVH render tree new updating scheme
BVH broadphase creates objects with updated AABB to avoid extra checks
Remove thread after use to prevent memory leak
Leaves in the bug fixes, but reverts the change to the update method.

Turns out the new update method of getting the scenarios was causing problems, I will need to consult with reduz on the best way of getting access to the scenarios for a single update per frame.

Doing multiple updates isn't terrible but it should be nicer to get a single update working, as it should be more efficient, and give a single point for pairing callbacks.
Partially revert change to BVH render tree update method
Fix freeze-crash in lightmapper under MinGW-GCC (3.2)
Fixes several instances of error: 'const' type qualifier on return type has no effect [-Werror,-Wignored-qualifiers]

This looks like it was fixed in 6607fc7
when FBX was merged into the 4.0 master branch:

"- fixed const correctness with C++/C version change"
[3.2] Fix const warnings in FBX (build failure on macOS)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Project crashes with no errors upon tweening a non existent node