Commit Graph

844 Commits

Author SHA1 Message Date
Rémi Verschelde 826ffc26c9
Merge pull request #33097 from clayjohn/GLES2-HTML-sampler_limit
Fixed using compressed textures and add work around for firefox webgl mesa sampler limit
2019-10-28 08:19:37 +01:00
Rafał Mikrut e53e1c566a Fix some crashes and using null pointers 2019-10-28 08:07:29 +01:00
clayjohn 7b3d098b2b Fixed using compressed textures and add work around for firefox webgl mesa sampler limit 2019-10-27 23:53:52 -07:00
clayjohn 51db564811 use proper texture in Android MSAA 2019-10-27 16:50:15 -07:00
Rémi Verschelde 3eb8bd08ec
Merge pull request #32657 from ptrojahn/lines
Fix draw_rect
2019-10-26 23:09:24 +02:00
Rémi Verschelde 3556876c08
Merge pull request #33093 from clayjohn/GLES2-HTML-shadows
Fix shadow mapping with RGBA textures on html
2019-10-26 22:07:46 +02:00
clayjohn 6ec7686a0c Fix shadow mapping with RGBA textures on html 2019-10-26 10:17:22 -07:00
Rémi Verschelde 69003457b3 WebGL 2.0: Force decompressing non power-of-2 textures with repeat/mipmap
While OpenGL ES 3.0 and WebGL 2.0 both support non power-of-2 (NPOT)
textures in their specification, the situation seems to be less clear
about *compressed* NPOT textures using repeat or mipmap flags.

At least Chrome on Linux doesn't seem to support this combination,
and a variety of mobile hardware have similar limitations.

As a workaround, we force decompressing such textures when running on
WebGL 2.0, at the cost of loading time and memory usage.

Fixes #33058.
2019-10-25 13:01:10 +02:00
Paul Trojahn bdaedb601c Fix draw_rect
OpenGL uses the diamond exit rule to rasterize lines. If we don't shift
the points down and to the right by 0.5, the line can sometimes miss a
pixel when it shouldn't. The final fragment of a line isn't drawn. By
drawing the lines clockwise, we can avoid a missing pixel in the rectangle.
See section 3.4.1 in the OpenGL 1.5 specification.
Fixes #32279
2019-10-11 10:26:53 +02:00
Rémi Verschelde a39aeade5b
Merge pull request #32170 from puthre/ninepatch-fix
GLES2 & GLES3 Fixes ninepatch margins for high resolution textures.
2019-10-09 08:33:56 +02:00
Rémi Verschelde 234289de2b
Merge pull request #32613 from clayjohn/GLES2-canvas-bg-mode
Add canvas background mode to GLES2
2019-10-07 08:57:44 +02:00
clayjohn 77939c6e2e add canvas background mode to GLES2 2019-10-06 23:26:11 -07:00
clayjohn cea1f13176 fix current issues with post-processing 2019-10-06 12:07:31 -07:00
Rémi Verschelde 0deccd4a65
Merge pull request #32510 from clayjohn/GLES2-fix-black-editor-and-crash
Remove glViewport call as it wasnt needed and caused crash GLES2
2019-10-03 08:16:19 +02:00
Rémi Verschelde ce336e7e72
Merge pull request #32505 from clayjohn/GLES2-fix-probe-crash
Fix reflection probe crash in GLES2 with post-processing
2019-10-03 07:55:08 +02:00
clayjohn a152816c52 remove glViewport call as it wasnt needed and caused crash 2019-10-02 20:21:41 -07:00
clayjohn 07fd9719bf Fix reflection probe crash in GLES2 with post-processing 2019-10-02 14:35:10 -07:00
Yuri Roubinsky 1472fca951 Removed unnecessary shader error log messages 2019-10-02 12:37:22 +03:00
clayjohn afaa68628a updated defaults and documentation for GLES2 glow 2019-10-01 07:55:04 -07:00
clayjohn 82f63633d1 Implement DOF blur, Glow, and BCS in GLES2 2019-09-30 08:04:31 -07:00
Rémi Verschelde 823c3def72 Fix copyright headers and style issues 2019-09-24 11:52:06 +02:00
Rémi Verschelde 159470df08
Merge pull request #32275 from godotengine/skin_support
Added skin support and simplified APIs to override bone position + glTF 2.0 import fixes
2019-09-23 15:02:15 +02:00
Rémi Verschelde 7174677fc8
Merge pull request #32259 from NeoSpark314/fix_stereo_cubemap_gles2
fix gles2 broken panorama sky on oculus quest
2019-09-22 21:18:06 +02:00
Holger Dammertz 94b0240767 fix gles2 broken panorama sky on oculus quest
This fixes an issue that was fixed for gles3 in #31419 but not applied
to gles2. The fix consists of using a constant scale for cube_normal of -1.0
instead of -1000000. It results in broken panorama rendering on the
oculus quest (see https://github.com/GodotVR/godot_oculus_mobile/issues/29)
2019-09-22 18:53:38 +02:00
lawnjelly f5365aa0e1 Fix GLES2 skinning where VERTEX_TEXTURE not supported
Although the backup USE_SKELETON_SOFTWARE skinning path is currently used when float texture is not supported, the default skinning path still fails when float texture is supported but GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS is 0, i.e. the device cannot read from texture during vertex shader. This PR adds the logic to activate the SKELETON_SOFTWARE path if either of these cases occur, preventing crashes on devices which have this combination of features.
2019-09-22 15:38:20 +01:00
Rémi Verschelde 28265fb526
Merge pull request #31202 from azagaya/light-data
Create shadow_vec for altering shadow computation
2019-09-19 20:03:04 +02:00
Juan Linietsky d81ddaf33e Added skin support and simplified APIs to override bone position. 2019-09-18 19:46:32 -03:00
Valentin Zagura 6ee84f53a9 GLES2 Fixes for ninepatch margins when patch size is smaller than the patch texture resolution..
Scaled ninepatch margins in screen space to be relative of the ninepatch size when the patch size is smaller than the patch texture resolution.
2019-09-17 09:51:54 +01:00
Chaosus 1333ea2a2d Implement shader array support for varyings 2019-09-14 18:23:25 +03:00
azagaya b835868067 Create shadow_vec for altering shadow computation
In 2.1 and 3.0, light_vec could be modified for altering shadow_computations.
But it broke shadows when rotating light. shadow_vec would do the same, but without breaking
shadows in rotated lights if not used.

Add inverse light transformation to shadow vec, so it's not affected when rotating lights;

Added usage define for shadow vec.

For shadow vec working properly when rotating a light, it's needed to multiply it by light_matrix normalized. Added usage define in order to don't do that if shadow_vec not used.
2019-09-06 13:55:49 -03:00
Rémi Verschelde ebbf63a87c
Merge pull request #31746 from clayjohn/skip-vertex-transform-gles2
Fix skip_vertex_transform bug in GLES2 CPUParticles
2019-08-29 08:37:12 +02:00
clayjohn 97f66900bb Fix skip_vertex_transform bug in GLES2 CPUParticles 2019-08-28 11:57:33 -07:00
Rémi Verschelde 816ddd7817
Merge pull request #31556 from Chaosus/gles2_inverse
Implemented inverse shader function to GLES2
2019-08-26 13:52:03 +02:00
Yuri Roubinski 982becfa39 Fix hint range step for integer in shaders 2019-08-25 15:11:04 +03:00
Yuri Roubinski 4dda253ee0 Implements switch to shaders 2019-08-23 14:43:09 +03:00
Yuri Roubinski 4dcee2035a Implemented inverse shader function to GLES2 2019-08-22 08:22:49 +03:00
Rémi Verschelde cce148b024
Merge pull request #31473 from Chaosus/shader_bug
Fix ternary operator shader compiler expression
2019-08-19 10:15:22 +02:00
Yuri Roubinski 9abf5578ee Fix ternary operator shader compiler expression 2019-08-19 08:40:54 +03:00
clayjohn 99de3906ba check if skeleton texture is already allocated before reallocating 2019-08-18 22:02:57 -07:00
Braden Bodily 71d71d55b5 Replace 'ERR_EXPLAIN' with 'ERR_FAIL_*_MSG' in 'core/' and 'editor/'
Condensed some if and ERR statements. Added dots to end of error messages

Couldn't figure out EXPLAINC. These files gave me trouble: core/error_macros.h, core/io/file_access_buffered_fa.h (where is it?),
core/os/memory.cpp,
drivers/png/png_driver_common.cpp,
drivers/xaudio2/audio_driver_xaudio2.cpp (where is it?)
2019-08-17 12:33:15 +02:00
Yuri Roubinski a525e3c5ce Implemented do/while loops for shaders 2019-08-13 18:39:55 +03:00
Rémi Verschelde ef91119502
Merge pull request #31271 from raphael10241024/gles2_shader
Fix GLES2 canvas shader uniform error
2019-08-12 08:32:06 +02:00
clayjohn 049dd309fe check for unsigned_short support for gles2 depth buffer allocation 2019-08-10 09:56:42 -07:00
RaphaelHunter 48f28c68bc fix gles2 canvas shader uniform error,close #31201 2019-08-10 21:52:51 +08:00
Rémi Verschelde d2a67c9c1f
Merge pull request #30714 from Calinou/invert-default-fog-height
Invert and adjust the default fog height values
2019-08-08 17:20:32 +02:00
Hugo Locurcio d1a35b5a97
Invert and adjust the default fog height values
This makes height fog appear at the bottom of the scene
(instead of the top), which is generally the expected result.

This also tweaks the fog height setting hint to be more flexible.

This closes #30709.
2019-08-07 18:21:44 +02:00
Rémi Verschelde 7b514d920d
Merge pull request #31099 from Chaosus/shader_local_const
Implemented local shader constants
2019-08-07 15:14:35 +02:00
Rémi Verschelde 7464074cb8
Merge pull request #30987 from clayjohn/GLES2-light-negative
Implement negative for OmniLights and SpotLights in GLES2
2019-08-05 19:21:13 +02:00
Yuri Roubinski b24b3497d6 Implemented local shader constants 2019-08-05 10:35:53 +03:00
Rémi Verschelde d9bba94d60
Merge pull request #31053 from aaronfranke/vector2i-cleanup
Some minor Vector2i usage cleanup
2019-08-05 08:08:57 +02:00
Yuri Roubinski 393f142495 Fix GLES2 rendering 2019-08-03 21:21:29 +03:00
Aaron Franke 1a06496f45
Some Vector2i usage cleanup
Replace casting Vector2 -> Vector2i -> Vector2 with a simple call to .floor(), and some minor fixes.
2019-08-03 01:11:05 -07:00
Chaosus 8b4c538ab2 Expose several GLES3 built-ins to GLES2 2019-07-31 19:00:10 +03:00
clayjohn 96c3004855 allow omnilights and spotlights to use negative in GLES2 2019-07-30 23:44:22 -07:00
Rémi Verschelde b697121d75
Merge pull request #30895 from clayjohn/gles2-shader-funcs
Added round function to gles2
2019-07-29 22:43:26 +02:00
clayjohn 3f25dde6b4 added round function to gles2 2019-07-29 11:17:08 -07:00
RaphaelHunter 47df933c27 update algorithm about paking float to vec4 to fix shadow shift and change rgba_shdow options 2019-07-28 11:43:01 +08:00
clayjohn 150487e728 fix gles2 shadow transparency bug 2019-07-21 23:52:19 -07:00
Rémi Verschelde d15cf7b672
Merge pull request #30576 from qarmin/lgtm_coverage
Changed some code reported by LGTM and Coverity
2019-07-20 12:00:13 +02:00
qarmin 6cbaf7662f Changed some code showed in LGTM and Coverage 2019-07-20 08:09:57 +02:00
Rémi Verschelde 1d13567345
Merge pull request #30570 from SonerSound/gles2_inconsistent_fix
Fix inconsistent lighting in GLES2
2019-07-17 09:56:44 +02:00
Chaosus 9379cbc774 Added local array initializer 2019-07-16 07:13:37 +03:00
Chaosus c37379456f Implemented local shader arrays 2019-07-15 15:57:39 +03:00
SonerSound 545bf86d39 Fix inconsistent lighting in GLES2
Issue was possibily being caused by duplicating a light even when that
light was not in the render_light_instances array.
2019-07-14 19:12:26 +01:00
Hugo Locurcio 707ce08cdd
Implement CanvasItem line antialiasing in GLES2
This is a straight copy-paste of the code from
`drivers/gles3/rasterizer_canvas_gles3.cpp`. It is subject to the
same restrictions as the GLES3 implementation: it only works
on desktop platforms as they use OpenGL instead of OpenGL ES.
2019-07-12 16:49:12 +02:00
Ibrahn Sahir 4e4697b1c4 Added release function to PoolVector::Access.
For clarity, assign-to-release idiom for PoolVector::Read/Write
replaced with a function call.
Existing uses replaced (or removed if already handled by scope)
2019-07-06 12:04:27 +01:00
Marcus Brummer 10f1e0f63a Prevent GLES2 bool uniforms from having a precision type set.
When setting the default precision type for uniforms (before compiling
the shader) prevent boolean uniforms from having one set. Booleans can't
have a precision type and on some Android devices this caused a
compilation failure.

Fixes #30317
2019-07-05 01:00:02 +02:00
Rémi Verschelde b0eeb12335
Merge pull request #29909 from clayjohn/gles2-light-scale
Scale vertex lit lights by environment scale
2019-07-01 16:28:17 +02:00
qarmin 4e5310cc60 Some code changed with Clang-Tidy 2019-06-26 15:08:25 +02:00
Rémi Verschelde 5c66771e3e
Merge pull request #29283 from qarmin/fix_some_always_same_values
Remove always true/false values
2019-06-20 21:10:10 +02:00
qarmin 072e40368e Fix always true/false values 2019-06-20 16:59:48 +02:00
clayjohn 80d732082b scale vertex lit lights by envorionment scale 2019-06-19 16:20:14 -07:00
Bastiaan Olij 4ebedb5f11 Made constants fully upper case in camera server 2019-06-19 22:24:54 +10:00
Rémi Verschelde 0cdbf7315b
Merge pull request #29751 from lawnjelly/skin-fix
Fixes crash with rigged meshes on some OpenGLES2 devices
2019-06-18 16:41:58 +02:00
lawnjelly e36e9fdb1c Fixes crash with rigged meshes on some OpenGLES2 devices
Non-tools OpenGLES2 devices that use the USE_SKELETON_SOFTWARE path (i.e. do not support float texture) depend on surface->data being set containing the bone IDs and weights (rasterizer_scene_gles2.cpp, line 1456, RasterizerSceneGLES2::_setup_geometry). However currently if TOOLS_ENABLED is not defined, surface->data is not stored in main memory in rasterizer_storage_gles2.cpp. This causes a crash in rasterizer_scene_gles2.cpp when a rigged object comes into view.

This fix addresses the specific case of skinned objects when USE_SKELETON_SOFTWARE is active, and stores a copy of the bone data, as is done when TOOLS_ENABLED is defined. This fixes the crash by allowing the same mechanism as on desktop, without adding the memory overhead of storing all vertex data where not required.

Fixes #28298
2019-06-18 09:42:07 +01:00
Rémi Verschelde 6ba1b4e371
Merge pull request #29764 from Calinou/boot-splash-no-filter-option
Add an option to disable boot splash filtering
2019-06-16 10:39:53 +02:00
Hugo Locurcio 786a7341a7
Add an option to disable boot splash filtering
Disabling filtering is usually desired in projects using a pixel art style.

This closes #19415.
2019-06-15 23:53:39 +02:00
BastiaanOlij 02ea99129e Adding a new Camera Server implementation to Godot.
This is a new singleton where camera sources such as webcams or cameras on a mobile phone can register themselves with the Server.
Other parts of Godot can interact with this to obtain images from the camera as textures.
This work includes additions to the Visual Server to use this functionality to present the camera image in the background. This is specifically targetted at AR applications.
2019-06-15 21:30:32 +10:00
Fabio Alessandrelli 9773350537 Fix HTML5 build failed due to undefined symbol 2019-06-14 23:32:48 +02:00
Rémi Verschelde c8db517993
Merge pull request #29316 from Chaosus/shader_const
Added constant support to shaders
2019-06-12 14:26:45 +02:00
Rémi Verschelde 971b5160c6
Merge pull request #29306 from qarmin/small_code_fixes
Small fixes to unrechable code, possibly overflows, using NULL pointers
2019-06-12 12:49:21 +02:00
Rémi Verschelde f18121824c Add missing license headers
Make `fix_headers.py` script compatible with Python 3.
2019-06-11 15:33:32 +02:00
Rémi Verschelde 0677383907
Merge pull request #29496 from clayjohn/dlopen-fix-gles2
Use def ANDROID_ENABLED so android features are not included in web builds
2019-06-11 11:48:38 +02:00
clayjohn 9af94d650f use def ANDROID_ENABLED so android features are not included in javascript builds 2019-06-04 23:12:20 -07:00
qarmin 8245db869f Small fixes to unrechable code, possibly overflows, using NULL pointers 2019-06-03 21:52:50 +02:00
clayjohn 2b8b1d7c46 added MultiMeshInstance2D node for using MultiMesh in 2D 2019-06-03 12:11:54 -07:00
Chaosus c2d4abf62e Added constant support to shaders
Co-authored-by: DavidSichma <sichmada@gmail.com>
2019-06-01 13:41:07 +03:00
Rémi Verschelde bac7e22cb1
Merge pull request #29236 from clayjohn/gles2-mirror
Separate culling state management from material state in GLES2
2019-05-30 15:01:50 +02:00
Rémi Verschelde c2e2bcbca9 Fix -Werror=maybe-uninitialized in GLES2 on release builds
Issue introduced in #28796.
2019-05-29 16:40:06 +02:00
clayjohn 2b59bd7695 separate culling state management from material 2019-05-27 11:45:53 -07:00
Rémi Verschelde b9ee3f3d64
Merge pull request #29014 from mbrlabs/gles2_precision_fix
Use highp precision in the gles2 fragment shader if available
2019-05-27 12:18:47 +02:00
Marcus Brummer 502dbc7c4a Use highp precision for gles2 shader uniforms if not explicitly set.
The use of different default precision values (highp in vertex; mediump
in fragment) for uniform variables caused the shader program to not link properly on some android
devices/emulators.
2019-05-25 14:26:08 +02:00
Rémi Verschelde da617b7943
Merge pull request #29132 from clayjohn/sort_depth_fix
Fix "no depth test" and render_priority sorting
2019-05-24 17:46:06 +02:00
Rémi Verschelde 01c41c782b
Merge pull request #28796 from clayjohn/GLES2-optimization
GLES2: Allow Viewports to render directly to screen
2019-05-24 17:31:44 +02:00
clayjohn 3365595254 do not compute fog when using unshaded in GLES2 2019-05-23 17:17:27 -07:00
clayjohn 2abe7deae8 fix no depth test and render_priority sorting 2019-05-23 09:21:57 -07:00
Bastiaan Olij 3ea778e66e Implement shadow to opacity 2019-05-21 20:07:46 +10:00
Rémi Verschelde e0574e1d98 Fix typos with codespell
Using codespell 1.15.0.

Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
doubleclick
leapyear
lod
merchantibility
nd
numer
ois
ony
que
seeked
synching
te
uint
unselect
webp
EOF

$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```
2019-05-19 13:10:35 +02:00
Rémi Verschelde aa3c5f59f2
Merge pull request #27898 from clayjohn/metallic_radiance
Added radiance when using clear color
2019-05-14 07:32:01 +02:00
clayjohn 65c211d303 Implement ability to render viewports directly to screen 2019-05-13 15:20:15 -07:00
clayjohn 5c252092e1 added radiance when using clear color and fixed brdf 2019-05-13 12:26:54 -07:00
Rémi Verschelde 86a74e2cb3
Merge pull request #27798 from clayjohn/gles2-proj-mat-bug
Fixes bug when setting projection matrix in shader GLES2
2019-05-13 17:59:40 +02:00
Rémi Verschelde e0517a12c5
Merge pull request #28518 from clayjohn/GLES2-MSAA
Added MSAA to GLES2 backend
2019-05-13 17:46:11 +02:00
Rémi Verschelde a0a5047cfd
Merge pull request #28723 from SouzaGuilherme/fix_shadows
Fix SHADOWS_DISABLED flag in GLES2
2019-05-13 17:22:57 +02:00
Daniel Rakos e34eb5c26c Fix texture resource reload bug
If a non-imported texture resource file (e.g. DDS) gets updated the editor
doesn't reload it. The cause of the problem is two-fold:

First, the code of ImageTexture assumes that textures are always imported
from an image, but that's not the case for e.g. DDS. This change thus adds
code to issue a resource reload in case an image reload is not possible
(which is the case for non-imported texture resources).

Second, the code is filled with bogus calls to Image::get_image_data_size()
to determine the mipmap offset when that should be done using
Image::get_image_mipmap_offset(). Previous code literally passed the integer
mip level value to Image::get_image_data_size() where that actually expects
a boolean. Thus this part of the change might actually solve some other
issues as well.

To be pedantic, the texture_get_data() funciton of the rasterizer drivers is
still quite a mess, as it only ever returns the whole mipchain when
GLES_OVER_GL is set (practically only on desktop builds) but this change does
not attempt to resolve that.
2019-05-08 17:22:40 +02:00
Guilherme Souza b363125568 Fix SHADOWS_DISABLED flag in GLES2
Signed-off-by: Guilherme Souza <gdsdsilva@inf.ufpel.edu.br>
2019-05-07 12:42:28 -03:00
clayjohn a3d5aec68d added MSAA to GLES backend 2019-05-02 14:24:20 -07:00
Rémi Verschelde dd2cd06165
Merge pull request #25670 from aqnuep/bake_mode_affect_gi_prove
Disable GI probe capturing lights with bake mode disabled
2019-04-30 18:33:34 +02:00
clayjohn e37d723695 fixes bug when setting projection matrix 2019-04-30 08:36:38 -07:00
Rémi Verschelde a5c619dc8d
Merge pull request #28520 from clayjohn/GLES2-alpha-draw-order
Fixed GLES2 transparency order
2019-04-30 17:20:05 +02:00
clayjohn 7ae3809f4b Fixed GLES2 transparency order 2019-04-29 12:22:41 -07:00
Rémi Verschelde a3617f6ca8
Merge pull request #28431 from SouzaGuilherme/master
Adds flag AMBIENT_LIGHT_DISABLED to GLES2
2019-04-29 16:55:36 +02:00
Guilherme Souza 61a844aa61 Adds flag AMBIENT_LIGHT_DISABLED to GLES2
Signed-off-by: Guilherme Souza <gdsdsilva@inf.ufpel.edu.br>
2019-04-25 20:25:05 -03:00
Daniel Rakos de33ef2d1b Disable GI probe capturing lights with bake mode disabled
The bake mode property of lights previously didn't affect GI probes.
This change makes the GI probe ignore lights that have their bake mode
set to disabled.
2019-04-23 11:36:36 +02:00
Rémi Verschelde a342131eba
Merge pull request #27673 from qarmin/small_fixes
Small fixes, mostly duplicated code
2019-04-22 12:00:34 +02:00
Rémi Verschelde dab8f8c953
Merge pull request #27967 from clayjohn/fix-mip-bug
Fixed bug in computing mip maps from screen texture
2019-04-15 13:05:50 +02:00
clayjohn 670c1b10b2 fixed bug in mip map sigma 2019-04-12 17:48:38 -07:00
Rémi Verschelde c8994b56f9 Style: Apply new changes from clang-format 8.0
It seems to stay compatible with formatting done by clang-format 6.0 and 7.0,
so contributors can keep using those versions for now (they will not undo those
changes).
2019-04-09 17:09:48 +02:00
JFonS 059078f075 Fix hint_range for GLES2 shader uniforms 2019-04-08 11:53:57 +02:00
qarmin 856a8226a5 Small fixes, mostly dupicated code 2019-04-08 11:03:37 +02:00
Rémi Verschelde c562a7d149
Merge pull request #27067 from shartte/remove-context-gl
Remove ContextGL
2019-04-07 12:38:55 +02:00
Sebastian Hartte 3a8c6db513 Remove ContextGL since as an abstraction it's unused. 2019-04-06 17:52:52 +02:00
Bastiaan Olij 8349d4fbd9 Add option to have viewport render into supplied texture 2019-04-06 08:24:58 +11:00
Rémi Verschelde cffbb99327
Merge pull request #27411 from KidRigger/raster_store
Added GLES2 RenderStorage Info calculations.
2019-04-05 15:22:22 +02:00
marxin e7f22ebdcd Enable warnings=extra on clang and GCC testers.
And remove 2 warnings from warnings=extra.
2019-04-02 17:14:47 +02:00
clayjohn 5056b4a02c keep DEPTH from causing compile error in GLES2 2019-03-28 22:14:41 -07:00
Anish Bhobe 4839b17f93 Added GLES2 RenderStorage Info calculations.
Proper counting code has been added to update info struct.

Extra: Added the render_info_capture calculations.
Fixes: #27273
2019-03-25 23:08:23 +05:30
Rémi Verschelde ac483345c4 GLES2: Convert unsupported float texture types to 8-bit types 2019-03-12 12:14:37 +01:00
Rémi Verschelde 3ebde6fac3 GLES2: Fix comments in previous commit that broke rendering (!)
Do NOT use "[vertex]" in a comment...

Kids, don't try to learn OpenGL on a production branch right before
a stable release.
2019-03-12 00:26:56 +01:00
Rémi Verschelde 74e224f2c7 GLES2: Add comments around EXT_shader_texture_lod check
To avoid reintroducing bugs as I did in #26928 and #26932.

texture2DLodEXT and textureCubeLodEXT are only for the fragment shader with
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_texture_lod.txt
In the vertex shader, texture2DLod and textureCubeLod are built-in.
2019-03-11 23:18:21 +01:00
Rémi Verschelde 764671d2d0 Revert "GLES2: Ensure extension checks for texture2DLod"
This reverts commit f5f565e3e4.
2019-03-11 23:12:49 +01:00
Rémi Verschelde 4cdb2d0502 Revert "GLES2: Fix regression on texture2DLod extension checks"
This reverts commit 8c2d38152f.
2019-03-11 23:12:39 +01:00
Rémi Verschelde 8c2d38152f GLES2: Fix regression on texture2DLod extension checks
These can't be done after any non-preprocessor token.
2019-03-11 21:59:20 +01:00
Rémi Verschelde bc3c6338cf
Merge pull request #26928 from akien-mga/gles2-texture2DLod-ext-check
GLES2: Ensure extension checks for texture2DLod
2019-03-11 20:51:36 +01:00
Juan Linietsky d9235be54b Enable seamless cubemap only if extension is present. 2019-03-11 16:49:04 -03:00
Rémi Verschelde f5f565e3e4 GLES2: Ensure extension checks for texture2DLod
In canvas.glsl and scene.glsl, we were using texel2DFetch from stdlib.glsl,
which uses texture2DLod. In both cases, the stdlib.glsl include came before
the define of texture2DLod.

Might fix issues for drivers that don't support GL_EXT_shader_texture_lod.
2019-03-11 19:34:31 +01:00
clayjohn 13eee31461 increase size of radiance map in gles2 2019-03-10 22:08:08 -07:00
clayjohn 63bb6808e6 gles2 reallocate texture when transparent is set 2019-03-09 10:56:51 -08:00
Juan Linietsky 7141c73ae8 Use glCopyTexSubImage2D instead of glCopyTexImage2D, should be safer and faster.
May be a solution to #26500
2019-03-07 00:14:13 -03:00
Rémi Verschelde b753223ac2
Merge pull request #26567 from clayjohn/pixel_snap_artifact
Fixed pixel snap precision artifact
2019-03-04 16:58:08 +01:00
clayjohn b804c491b7 fixed pixel snap precision artifact 2019-03-04 07:18:02 -08:00
Rémi Verschelde b811207406 More style cleanup... 2019-03-04 10:11:29 +01:00
Juan Linietsky 34dd772054 Properly redraw if something animated is visible 2019-03-03 13:43:54 -03:00
Juan Linietsky 2f32a75d2e Skeletons can now choose between using local or world coords for processing, fixes #26468 2019-03-03 12:24:00 -03:00
Rémi Verschelde e930fb9a6e Fix typo in 7bad170
And cleanup.
2019-03-02 00:45:01 +01:00
Juan Linietsky 7bad1706c2 -Fix prepass state not being reset, closes #26348
-Send zero values for shader if no default exists
2019-03-01 19:28:24 -03:00
Juan Linietsky 834a984b08 Fixed RGTC (and other compressed) texture supports in GLES2. Fixes #26414 an probably others. 2019-03-01 18:18:55 -03:00
Juan Linietsky ff34cd58ff Skeleton was not providing prober AABB in GLES2, fixed. 2019-03-01 17:41:15 -03:00
Juan Linietsky 51b80f6857 Fixed some crashers, closes #26393 2019-03-01 17:24:57 -03:00
Juan Linietsky 8a9119ad7f Fix non initialized variable. 2019-03-01 16:45:38 -03:00
Rémi Verschelde 3ece0004fa Remove unused include from previous commit 2019-03-01 20:12:35 +01:00
Juan Linietsky 3f681b0681 Clean up blend shape support in GLES2 and GLES3. 2019-03-01 16:01:44 -03:00
Juan Linietsky 8799f69b2c Strive for maximum compatibility in GLES2 regarding depth buffers. 2019-03-01 11:21:21 -03:00
Juan Linietsky 5efd693384 Massive improvement to GLES2 performance, rewrote most ShaderGLES2 class.
This fixes #26337
2019-02-27 23:49:34 -03:00
Juan Linietsky 057d3e874d Detect for 24 bits oes support on GLES2, closes #26344 2019-02-27 18:57:33 -03:00
Rémi Verschelde 426a6fdc17
Merge pull request #26134 from marxin/fix-Wsign-compare
Fix -Wsign-compare warnings.
2019-02-27 09:22:47 +01:00
Rémi Verschelde 0ba75c195e Fix GCC 5 build after #26331 and cleanup style
Also cleanup after 01a3dd3.
2019-02-27 09:01:24 +01:00
marxin e5f665c718 Fix -Wsign-compare warnings.
I decided to modify code in a defensive way. Ideally functions
like size() or length() should return an unsigned type.
2019-02-27 07:45:57 +01:00
Juan Linietsky 01a3dd389c Remove references to OES24, which is incompatible with many devices. 2019-02-26 19:45:15 -03:00
Juan Linietsky 5eeb06ffd1 -Remove harcoded opengl extension testing from OS, ask rasterizer instead.
-Fixed a bug where etc textures were imported broken
2019-02-26 11:58:47 -03:00
Rémi Verschelde e47b4bdc3d
Merge pull request #26286 from kaadmy/gles2_ortho_shadow
Fix orthographic shadow color when using GLES2
2019-02-26 08:50:42 +01:00
Juan Linietsky a32b26dfa2 Several fixes to make GLES2 on HTML5 work much better.
Changed math class error reporting to be a bit less paranoid.
2019-02-25 21:47:29 -03:00
KaadmY e1a34d0728 Fix orthographic shadow color when using GLES2 2019-02-25 13:57:23 -08:00
Juan Linietsky 31656301b2 Removed debug function. 2019-02-24 23:12:27 -03:00
Juan Linietsky 74d0ed2236 Many separate fixes to ensure non power of 2 textures work on GLES2, closes #25897 and many others 2019-02-24 22:36:53 -03:00
Hein-Pieter van Braam a83e77fded Explicitly use floating point numbers in the our shaders
We need to be explicit about using floating point numbers in our shaders
for compatibility with mobile GLES drivers.
2019-02-24 23:35:10 +00:00
Juan Linietsky ab8f3d7842 Fixed issue with buffers being wrongly cleared, closes #25484 2019-02-24 00:33:22 -03:00
Juan Linietsky d79c8d7655 Fix vertex lighting in GLES2, closes #25365 2019-02-23 19:53:04 -03:00
Juan Linietsky 16e67388a2 Properly update materials when adding surface, fixes #23790 2019-02-22 16:27:00 -03:00
Rémi Verschelde 513b7ddab6 Remove unused variable after aab8f44 2019-02-22 16:51:16 +01:00
Juan Linietsky aab8f443f9 -Support DEPTH_TEXTURE in GLES2, fixes #25106
-Fix use of transparent framebuffers in GLES2
-Fix use of ambient color clearing in GLES2 when no environment exists.
2019-02-22 11:35:39 -03:00
Rémi Verschelde c4b736d7ad Fix code style issues 2019-02-22 09:52:27 +01:00
Juan Linietsky 5784caae73 Make alpha 1.0 when using texscreen, fixes #25850 2019-02-21 19:43:34 -03:00
JFonS 32e7641667 Revert back to ignoring LIGHT_VEC for 2D shadows 2019-02-21 12:16:10 +01:00
marxin 8d51618949 Add -Wshadow=local to warnings and fix reported issues.
Fixes #25316.
2019-02-20 19:44:12 +01:00
Rémi Verschelde 19f79d04fb
Merge pull request #26005 from clayjohn/gles2_shadow_color
Added shadow_color property to gles2
2019-02-18 13:48:17 +01:00
clayjohn 9b0326d2f3 added shadow_color property to gles2 2019-02-17 23:57:57 -08:00
Rémi Verschelde 5fc86026ca Fix typos with codespell
Using codespell 1.14.0.

Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
doubleclick
lod
nd
numer
que
te
unselect
EOF
$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```
2019-02-13 09:23:29 +01:00
Rémi Verschelde 55ca2a7c88
Merge pull request #25821 from akien-mga/sync-class-and-filenames
Ensure classes match their header filename
2019-02-13 08:49:39 +01:00
Rémi Verschelde 5aff990354 Fix infinite recursion in GLES2 _copy_texscreen
Bug introduced in 9430e68cf3,
likely a typo.
2019-02-12 23:38:33 +01:00
Juan Linietsky 9430e68cf3 Support SCREEN_TEXTURE in GLES2, fixes #25405 2019-02-12 18:49:57 -03:00
Juan Linietsky b8319e7c60 Ability to vflip viewports in GLES2, fixes #24555
Also culling was reversed somehow.
2019-02-12 15:56:39 -03:00
Juan Linietsky 0d0d074c4d Use UVs with the nvidia rendering hack, fixes #24563 2019-02-12 15:31:10 -03:00
Juan Linietsky 4af8009b9d Fix fog in GLES2 by using epic hack, closes #25410 2019-02-12 14:35:16 -03:00
Juan Linietsky 8fd6a02d3e Missing canvas end left mask turned on, fixes #25666 2019-02-12 09:55:22 -03:00
Rémi Verschelde b7cc2bb1e2 Core: Ensure classes match their header filename
Also drop some unused files.

Renamed:
- `core/dvector.h` -> `pool_vector.h`
- `core/io/resource_import.h` -> `resource_importer.h`
- `core/sort.h` -> `sort_array.h`
- `core/string_db.h` -> `string_name.h`

Dropped:
- `core/allocators.h`
- `core/os/shell.h`
- `core/variant_construct_string.cpp`
2019-02-12 13:34:25 +01:00
Rémi Verschelde 13c50e8aa5
Merge pull request #25481 from hpvb/fix-ubsan-asan-reports
Fix many asan and ubsan reported issues
2019-02-12 12:21:01 +01:00
Rémi Verschelde 6e43bd4e85
Merge pull request #25623 from clayjohn/multimesh_color_bug
[GLES2] Initialize color buffer to white in gles2 multimesh
2019-02-12 11:31:45 +01:00
Rémi Verschelde 204f9083f4
Merge pull request #25682 from JFonS/fix_light_canvas_gles2
Fix canvas light shaders on GLES2
2019-02-12 11:27:21 +01:00
Rémi Verschelde 48bc7aedaa
Merge pull request #25779 from JFonS/fix_25581
Make LIGHT_VEC affect 2D shadows again
2019-02-12 11:24:27 +01:00
Juan Linietsky 7713ec8637
Merge pull request #25134 from staddy/master
Check for null pointer in RasterizerSceneGLES2::render_shadow
2019-02-12 07:04:12 -03:00
JFonS 076a342a4e Make LIGHT_VEC affect 2D shadows again 2019-02-10 21:14:32 +01:00
JFonS 5186d4f3ad Fix canvas light shaders on GLES2 2019-02-07 15:58:36 +01:00
clayjohn f752aaf970 initialize color buffer to white in gles2 multimesh 2019-02-04 20:08:35 -08:00
Hein-Pieter van Braam d308eb091a Fix many asan and ubsan reported issues
This allows most demos to run without any ubsan or asan errors. There
are still some things in thirdpart/ and some things in AudioServer that
needs a look but this fixes a lot of issues. This should help debug less
obvious issues, hopefully.

This fixes #25217 and fixes #25218
2019-01-30 06:43:56 +01:00
Rémi Verschelde b77b536582 Cleanup and identify ShaderCompilerGLES[23] differences 2019-01-28 19:28:00 +01:00
Rémi Verschelde 1148a33b20 GLES2: Define LIGHT Spatial shader builtin
Fixes #25421.
2019-01-28 17:27:20 +01:00
Juan Linietsky 2e5ede7a4e Properly discard fragments during depth prepass opaque pass, fixes #23321 2019-01-27 20:20:07 -03:00
Juan Linietsky 0c60d4c682 Properly get proxy texture size for canvas light, fixes #17067 2019-01-27 16:57:05 -03:00
Juan Linietsky 953cd03ea6 Use transparent framebuffer only when set to transparent, closes #21827 2019-01-27 15:47:17 -03:00
muiroc d1e399a971 fix s3tc support detection for webgl 2019-01-26 22:25:03 +01:00
Juan Linietsky 18c3ed245a Further fixes to avoid memory corruption, closes #25336 2019-01-26 10:47:04 -03:00
Juan Linietsky 973b68f396 Properly dispose of custom shaders, closes #19300 2019-01-25 19:28:27 -03:00
Juan Linietsky 5b5db08a51 Fix depth prepass in GLES2, closes #23321 2019-01-25 09:41:25 -03:00
Juan Linietsky b32298a660 Ensure WebGL uses highp by default, and fix some wrong mediump usages. Fixes #22962. 2019-01-24 18:58:42 -03:00
Juan Linietsky fb7c526ec4 Fix crash with cube shadows in gles2, closes #22635 2019-01-24 17:51:49 -03:00
Juan Linietsky 7fa41f17a6 Makes screen texture work in GLES2 (2D for now), fixes #23604 2019-01-24 17:00:33 -03:00
Juan Linietsky 2d57ec2460 Fix problem with texture2Dlod, closes #25263 2019-01-23 17:06:37 -03:00
Rémi Verschelde 2a45b298c1 Remove unused method in RasterizerStorageGLES2
Added in 4f4e46edd5 but not used in the end.
2019-01-23 10:31:05 +01:00
Juan Linietsky 4f4e46edd5 Implement unpacking for compressed vertex formats on GLES2 when not supported, fixes #22957 2019-01-22 21:57:09 -03:00
Juan Linietsky 4333a68ca0 Do not use shadow cubemaps if depth write is not supported to avoid errors, closes #25219 2019-01-22 11:07:26 -03:00
Juan Linietsky 46af4b0a4b Changes to GLES2 renderer to not use cube shadows if not available, fixes #25132 2019-01-22 10:05:23 -03:00
santouits 3c1cd2873b WebGL1 some changes
glRenderBufferStorage doesn't accept the _DEPTH_COMPONENT24_OES so I changed it to GL_DEPTH_COMPONENT16
https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/renderbufferStorage
https://www.khronos.org/registry/webgl/extensions/rejected/OES_depth24/

Enabled ext_shader_texture_lod extension. I guess it does the same like the GL_ARB_shader_texture_lod extension, but in WebGL1
https://www.khronos.org/registry/webgl/extensions/EXT_shader_texture_lod/

And last WebGL1 doesn't allow indexes not constant, so I changed it into a loop reading this:
https://stackoverflow.com/questions/19529690/index-expression-must-be-constant-webgl-glsl-error
2019-01-22 13:40:28 +02:00
santouits e7e9a7cc6c webgl1 doesn't like backslashes in #define
According to
https://www.khronos.org/registry/OpenGL/specs/es/2.0/GLSL_ES_Specification_1.00.pdf
, backslashes aren't necessary supported as line continuation characters
in preprocessor directives
2019-01-21 21:41:39 +02:00
Stanislav dc7d9f8868 Check for null pointer in RasterizerSceneGLES2::render_shadow
Fixes #25131
2019-01-19 16:48:43 +03:00
Juan Linietsky 682fdf0f74 Use 16 bit indices on phones that dont support 32, fixes #19797 2019-01-18 17:30:12 -03:00
RedMser a285a1cfdf Fix shader compile error line numbers starting at 0. 2019-01-17 19:25:08 +01:00
Juan Linietsky 7478f468b2 Fixes to 2D lights, closes #24750 2019-01-17 10:40:36 -03:00
Juan Linietsky ffcb5cd18c Ensure texture hints are obeyed, fixes #24875 2019-01-16 00:37:00 -03:00
Rémi Verschelde 72f501de13 GLES2: Fix typo in project setting
It used a different name than the equivalent GLES3 parameter.
2019-01-15 13:26:54 +01:00
Juan Linietsky ee3eadf345 Implement black margins in GLES2, which was missing, fixes #24556 2019-01-14 19:00:36 -03:00
Rémi Verschelde 02ffc59270 GLES2: Make Nvidia flicker workaround opt-in
It has a big impact on 2D and text rendering performance (cf. #24466)
so the solution seems worse than the bug it aims to work around.

It's now opt-in via "rendering/quality/2d/gles2_use_nvidia_rect_flicker_workaround"
for those who need it and have a simple enough game for the performance
drop not to be an issue.

Fixes #24466.
2019-01-14 19:02:07 +01:00
Juan Linietsky b3dc02b5df Was not properly re-setting light uniforms, fixes #24976 2019-01-14 12:04:26 -03:00
Juan Linietsky 6d8083ea65 Do not use the workaround for desktop nvidia on mobile and html5. 2019-01-14 11:24:00 -03:00
Rémi Verschelde 1185f4c4ac GLES2: Clarify why we exclude debug code on iOS
Supersedes and closes #24873.
2019-01-11 20:04:13 +01:00
Juan Linietsky a3a537c2cf Fix background color rendering on GLES2 (linear should not be used) 2019-01-07 10:52:24 -03:00
Daeil Kim ecf520b70e Change blend equation for canvasitems 2019-01-06 00:57:52 +09:00
Rémi Verschelde 1504c96112
Merge pull request #24539 from BastiaanOlij/override_gl_position
Override GL_position
2019-01-04 15:40:05 +01:00
Marcin Zawiejski 4e73274837
Fix negative size rectangle drawing
Fixes rectangle being drawn as it was a non-negative size in case it actually is. This can be observed e.g. when drawing a negative size selection rectangle (i.e. press mouse button and move cursor up and left).
2019-01-02 14:47:28 +01:00
Rémi Verschelde c7c87a0624
Merge pull request #24687 from DavidSichma/draw-rect-rot
fix draw_rect rotation
2019-01-01 19:01:18 +01:00
Rémi Verschelde b16c309f82 Update copyright statements to 2019
Happy new year to the wonderful Godot community!
2019-01-01 12:58:10 +01:00
Rémi Verschelde d1f3b622f0 Fix missing/malformed license headers 2019-01-01 12:46:36 +01:00
David Sichma 9ba6849cf4 fix draw_rect rotation 2018-12-31 20:56:10 +01:00
Rémi Verschelde 6a07d7f83f
Merge pull request #24661 from humblers/fix-unshaded-gles2
Fix unshaded light mode on GLES2
2018-12-30 13:48:01 +01:00
Rémi Verschelde 6c67ca3f5b
Merge pull request #24653 from avril-gh/fixes-syntax-error-in-scene-glsl
fixes glsl syntax error
2018-12-30 13:07:12 +01:00
Daeil Kim 8c99b6fb2f Change unshaded logic to match with GLES3 2018-12-30 02:02:37 +09:00
Avril 971c05dc5e fixes glsl syntax error 2018-12-29 15:37:50 +01:00
Bastiaan Olij 9f266cf7e5 Override GL_position 2018-12-29 23:56:50 +11:00
Bastiaan Olij 9055386de9 Fix texture type not being initialised 2018-12-29 23:44:28 +11:00
Juan Linietsky a366d45856 -Implented 2D Mesh support for GLES2
-Implemented 2D Skeleton deform for GLES2
-Implement Multimesh support for GLES2, closes #20524, closes #21839
2018-12-27 20:41:04 -03:00
Rémi Verschelde 57416bfbce GLES2: Define 'lowp' for OpenGL 2.1
Precision qualifiers are only used on OpenGL ES 2.0 and 3.0,
and while OpenGL 3.3 defines them for compatibility (but without
practical effect), they're missing from OpenGL 2.1, so we define
them to prevent compilation errors.

Fixes #24521.
2018-12-21 15:14:58 +01:00
Juan Linietsky 7b1cbe9874 Reverse RGBA shadow test on GLES2 2018-12-21 10:02:43 -03:00
Juan Linietsky 7535c5a56a Further GLES2 fixes 2018-12-21 10:01:16 -03:00
Juan Linietsky 9ea27ec032 Fixes to framebuffer formats for GLES2, closes #24518 2018-12-21 09:50:57 -03:00
Juan Linietsky f3cb236f9d Remove usage of VAO, which does not work in GLES2 2018-12-20 17:28:01 -03:00
Juan Linietsky 3bdd1ff387 Support lights and shadows in GLES2, fixes #21853 2018-12-20 10:10:30 -03:00
Rémi Verschelde b3f6e54cc6 Style: Fix formatting in GLES2 shaders 2018-12-20 10:33:48 +01:00
Gitea 9f48094982 fix gles2 spotlight problem 2018-12-20 15:01:59 +08:00
Juan Linietsky aa819a8538 Properly support light shaders in GLES2, fixes #21651 2018-12-19 10:25:45 -03:00
Juan Linietsky bec76cfa19 Change how rects are drawn (and also will help batching eventually), to workaround problem in #9913 2018-12-18 17:50:35 -03:00