Age | Commit message (Collapse) | Author |
|
Fall back to GLES2 if GLES3 is not working
|
|
|
|
Style: Enable clang-format on GLSL shaders
|
|
As of clang-format 6.0.1, putting the `/* clang-format off */` hint
around our "invalid" `[vertex]` and `[shader]` statements isn't enough
to prevent a bogus indent of the next comments and first valid statement,
so we need to enclose that first valid statement in the unformatted chunk.
|
|
|
|
This adds a static is_viable() method to all rasterizers which has to be
called before initializing the rasterizer. This allows us to check what
rasterizer to use in OS::initialize together with the GL context
initialization.
This commit also adds a new project setting
"rendering/quality/driver/driver_fallback" which allows the creator of a
project to specify whether or not fallback to GLES2 is allowed. This
setting is ignored for the editor so the editor will always open even if
the project itself cannot run. This will hopefully reduce confusion for
users downloading projects from the internet.
We also no longer crash when GLES3 is not functioning on a platform.
This fixes #15324
|
|
|
|
Style: Fix code formatting in GLSL shaders
|
|
|
|
Add print_verbose to print to stdout only in verbose mode
|
|
|
|
[GLES2] fix wrong shader compiler output
|
|
[GLES2] attempt to fix some android problems
|
|
The `f` postfix was working fine on dekstop GL but not on
some mobile drivers.
|
|
When using float colors, everything works fine, but when using
the byte format, the colors were read incorrectly.
|
|
Equivalent of the cumbersome:
if (OS::get_singleton()->is_stdout_verbose())
print_line(msg);
|
|
[GLES2] fix texture flags not having an effect
|
|
|
|
[GLES2] fix CanvasModulate not working
|
|
That's what happens when you forget about your debug
shortcuts.
Fixes #21025
|
|
|
|
karroffel/gles2-canvas-texture-sampler-long-branch-name
[GLES2] fix canvas_item sampler allocation
|
|
|
|
|
|
|
|
|
|
This reverts commit f55039b194bbbd8d797b667d67e5677fb429d356.
The GLES2 batching seems to require more testing and tweaking in order
to actually make the performance better on Android devices. It's been
proved with #21184 that the current implementation has it's drawbacks
therefore I suggest reverting the commit for now.
|
|
Batch GLES2 draw calls
|
|
|
|
|
|
Fix handling of normals that approach 1
|
|
|
|
Adds GLES2 draw calls batching for the same render list item that uses
multiple rasterizer commands (e.g. Label node; a node with multiple
GDScript draw_* calls).
|
|
|
|
|
|
|
|
unhacking some GLES2 code
|
|
This commit unhacks some parts of the 3D rendering.
Most notably:
- possibility to use negative texture units
(no longer weird manual index allocation for user samplers)
- refactoring of light code, now sorts in a different way,
should yield better performance
- fixes a crash while saving (because of "Illegal instruction" execution)
when using a decent compiler (clang, it's clang. Thanks GCC for not telling me about UB).
|
|
Keeping track of discard
|
|
Roughness is now set to 1 by default and albedo is now white,
even on meshes that do not have any materials defined.
This means there is no longer a visual difference between a
mesh with no materials defined and a mesh with a default
SpatialMaterial defined.
|
|
|
|
add 3D textures
|
|
|
|
Shader compilation now keeps track of the discard key word.
Previously only variables were monitored. But discard, which needs
special treatment in some cases, went unnoticed by the compiler as
discard is not a variable but a flow control.
This commit adds monitoring for discard.
|
|
|
|
|
|
This commit makes operator[] on Vector const and adds a write proxy to it. From
now on writes to Vectors need to happen through the .write proxy. So for
instance:
Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;
Failing to use the .write proxy will cause a compilation error.
In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.
_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.
|
|
Remove duplicated codes
|
|
sync rasterizers with engine
|
|
|