Commit graph

286 commits

Author SHA1 Message Date
Hein-Pieter van Braam
08f452d1a9 Fall back to GLES2 if GLES3 is not working
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
2018-08-26 16:40:46 +02:00
Rémi Verschelde
52466d57e9 Make some debug prints verbose-only, remove others 2018-08-24 14:59:01 +02:00
Rémi Verschelde
de59fe04e7 Add print_verbose to print to stdout only in verbose mode
Equivalent of the cumbersome:
if (OS::get_singleton()->is_stdout_verbose())
	print_line(msg);
2018-08-24 09:23:20 +02:00
Rémi Verschelde
2d4a4a245d Main: Fix --check-only option implemented as paired
Fixes #20503.

Also added the option to the Linux manpage.
2018-07-27 08:39:48 +02:00
Rémi Verschelde
237148e80f
Merge pull request #18368 from Gamblify/RasterizerEngineSync
sync rasterizers with engine
2018-07-25 20:33:37 +02:00
Rémi Verschelde
8c9e10553c Fix build issues and typos after c69de2ba4 2018-07-20 08:37:10 +02:00
Juan Linietsky
c69de2ba46 -Project/Editor settings now use new inspector
-Project/Editor settings now show tooltips properly
-Settings thar require restart now will show a restart warning
-Video driver is now visible all the time, can be changed easily
-Added function to request current video driver
2018-07-19 19:02:04 -03:00
Marcelo Fernandez
9f6536bd0a Add Audio Server profiling time to the profiler 2018-07-17 10:11:56 -03:00
Max Hilbrunner
dc2d8d4dee
Merge pull request #19229 from RandomShaper/fix-focus-steal
Fix debugger focus stealing
2018-07-05 00:27:08 +02:00
Chaosus
5c0a576630 Fix vsync initialization 2018-06-25 18:17:19 +03:00
Nathan Warden
03bb14bcc5 The build-solutions flag now forces editor mode. 2018-06-15 17:08:59 -05:00
Marcelo Fernandez
c8a5145a6d Removed unused AudioServer::update function 2018-06-15 14:13:33 -03:00
Gustav Lund
35eb7f2d6a Rasterizers are now in sync with engine
The rasterisers (both GLES3 and GLES2) were calculating their own frame delta time
This fix lets the rasterizers get the frame delta through the draw call
That way any regulations to the frame step from the main script will not cause particle systems to process at a different step than the rest of the Engine.

Remove unused rasterizer storage variable

frame.prev_tick variable were not used anywhere and has been removed
2018-06-05 16:33:02 +02:00
Timur Celik
3390972373 Add cli paramerter --check-only for script parsing 2018-05-31 20:42:32 +02:00
Pedro J. Estébanez
2fcbf9dd81 Fix debugger focus stealing
At least on Windows, the authorization must be given every time, not only at startup.
2018-05-28 21:49:48 +02:00
Juan Linietsky
5bb412f389
Revert "Make the performance reporting update frequency customizable" 2018-05-28 08:47:09 -03:00
Max Hilbrunner
16974d81d8
Merge pull request #18998 from Calinou/customizable-performance-reporting-rate
Make the performance reporting update frequency customizable
2018-05-26 17:31:52 +02:00
George Marques
55b4b30ab2
Only add autoloads in editor if they have tool scripts 2018-05-22 13:26:13 -03:00
Hugo Locurcio
228ae60a63
Make the performance reporting update frequency customizable
The default update frequency has been changed from 1000ms to 250ms.
2018-05-18 11:49:21 +02:00
Juan Linietsky
005b69cf6e -New inspector.
-Changed UI resizing code, gained huge amount of speed.
-Reorganized timer sync to clean up behavior (sorry forgot commit this before)

-
2018-05-15 17:14:31 -03:00
Juan Linietsky
47d4a011d8
Merge pull request #18545 from vnen/editor-autoload
Enable autoload in editor
2018-05-14 17:59:34 -03:00
Leon Krause
430d84769c Change reused variable name in command line parsing 2018-05-12 13:31:03 +02:00
Leon Krause
5b4974f171 Remove dead branch in command line logic 2018-05-12 13:10:13 +02:00
Leon Krause
3bdeb6f8a8 Revert "Fix custom resource path look-up per command line"
This reverts commit 942f6dfbd6.
2018-05-12 12:50:58 +02:00
Rémi Verschelde
eaa6613f06
Merge pull request #18770 from eska014/cmdline
Command line fixes
2018-05-11 14:20:50 +02:00
Leon Krause
c4c7270cc7 Fix help/man for --export and --export-debug 2018-05-10 22:08:21 +02:00
Leon Krause
942f6dfbd6 Fix custom resource path look-up per command line 2018-05-10 20:18:43 +02:00
volzhs
99bc7f3f4e Fix setting for pointing emulation
Fix #18582

GLOBAL_DEF("input/something") is treated as Input Map setting, not as General.
2018-05-10 14:26:28 +09:00
Hein-Pieter van Braam
e668757aa9
Merge pull request #14622 from bruvzg/non-rectangular-windows
Experimental support for windows with per-pixel transparency.
2018-05-08 16:44:35 +02:00
Blazej Floch
c45f44d856 Local debugger fixes and extensions
- Adds q/quit option to console debugging
- Adds options (variable_prefix)
- Breaks into debugger with Ctrl-C in local debug mode (Unix/Windows)
- Added option to list all breakpoints
- Fixes add/remove breakpoint bug (invalid path parsing)
- Minor cleanup
2018-05-07 23:17:06 -04:00
Juan Linietsky
633bbdb231
Merge pull request #17353 from zmanuel/timer_hysteresis_multiframe_pr1
Use hysteresis for smoother physics update frequency
2018-05-07 19:27:32 -03:00
Rémi Verschelde
18c28c159d
Merge pull request #17196 from RandomShaper/improve-gui-touch
Implement universal translation of touch to mouse (3.1)
2018-05-02 10:47:49 +02:00
George Marques
decf178033
Enable autoload in editor
- Tool scripts will be executed and can be accessed by plugins.
- Other script languages can implement add/remove_named_global_constant
to make use of this functionality.
2018-05-01 11:44:08 -03:00
Pedro J. Estébanez
de9d40a953 Implement universal translation of touch to mouse
Now generating mouse events from touch is optional (on by default) and it's performed by `InputDefault` instead of having each OS abstraction doing it. (*)

The translation algorithm waits for a touch index to be pressed and tracks it translating its events to mouse events until it is raised, while ignoring other pointers.

Furthermore, to avoid an stuck "touch mouse", since not all platforms may report touches raised when the window is unfocused, it checks if touches are still down by the time it's focused again and if so it resets the state of the emulated mouse.

*: In the case of Windows, since it already provides touch-to-mouse translation by itself, "echo" mouse events are filtered out to have it working like the rest.

On X11 a little hack has been needed to avoid a case of a spurious mouse motion event that is generated during touch interaction.

Plus: Improve/fix tracking of current mouse position.

** Summary of changes to settings: **

- `display/window/handheld/emulate_touchscreen` becomes `input/pointing_devices/emulate_touch_from_mouse`
- New setting: `input/pointing_devices/emulate_mouse_from_touch`
2018-04-30 19:03:38 +02:00
Hugo Locurcio
1c419531a0 Change ".." punctuation for "..." in editor strings (#16507) 2018-04-22 19:36:01 +02:00
Hugo Locurcio
16a3f66420
Enable DynamicFont oversampling by default
This results in a better DynamicFont appearance when scaled, which
is especially noticeable when using the `2d` scaling mode.
2018-04-19 01:25:25 +02:00
Manuel Moos
d5abd4eb75 Add hysteresis to physics timestep count per frame
Add new class _TimerSync to manage timestep calculations.
The new class handles the decisions about simulation progression
previously handled by main::iteration(). It is fed the current timer
ticks and determines how many physics updates are to be run and what
the delta argument to the _process() functions should be.

The new class tries to keep the number of physics updates per frame as
constant as possible from frame to frame. Ideally, it would be N steps
every render frame, but even with perfectly regular rendering, the
general case is that N or N+1 steps are required per frame, for some
fixed N. The best guess for N is stored in typical_physics_steps.

When determining the number of steps to take, no restrictions are
imposed between the choice of typical_physics_steps and
typical_physics_steps+1 steps. Should more or less steps than that be
required, the accumulated remaining time (as before, stored in
time_accum) needs to surpass its boundaries by some minimal threshold.
Once surpassed, typical_physics_steps is updated to allow the new step
count for future updates.

Care is taken that the modified calculation of the number of physics
steps is not observable from game code that only checks the delta
parameters to the _process and _physics_process functions; in addition
to modifying the number of steps, the _process argument is modified as
well to stay in expected bounds. Extra care is taken that the accumulated
steps still sum up to roughly the real elapsed time, up to a maximum
tolerated difference.

To allow the hysteresis code to work correctly on higher refresh
monitors, the number of typical physics steps is not only recorded and
kept consistent for single render frames, but for groups of them.
Currently, up to 12 frames are grouped that way.

The engine parameter physics_jitter_fix controls both the maximum
tolerated difference between wall clock time and summed up _process
arguments and the threshold for changing typical_physics_steps. It is
given in units of the real physics frame slice 1/physics_fps. Set
physics_jitter_fix to 0 to disable the effects of the new code here.
It starts to be effective against the random physics jitter at around
0.02 to 0.05. at values greater than 1 it starts having ill effects on
the engine's ability to react sensibly to dropped frames and framerate
changes.
2018-04-09 22:27:29 +02:00
bruvzg
ddae098dee
Experimental support for windows with per-pixel transparency (macOS, X11 and Windows). 2018-04-07 17:11:45 +03:00
Rémi Verschelde
10fa69285c Add --print-fps option to output FPS to stdout
Works both for the editor and games.

Projects can still use "debug/settings/stdout/print_fps" to enable it
permanently. The --print-fps option takes precedence (so works even if
the project setting is disabled). That setting is also no longer redefined
on the fly based on the verbose flag, that was a mess.
2018-03-21 09:08:51 +01:00
Bernhard Liebl
2b728de8f2 Fix debugger_stdout_settings being ignored 2018-03-15 12:22:10 +01:00
bruvzg
f0d24de960
Fix --help output, allow renderer override from command line (--video-driver). 2018-03-02 10:05:14 +02:00
Hein-Pieter van Braam
b4215c991a Allow running with a custom resource without a main scene
After 3f8a4cc719 trying to run an
individual scene on a project without a main scene fails. We move the
check until after we've determined whether or not we're trying to run an
individual scene.

We also stop trying to show the project manager if any game pack is
found at all, unless the user explicitly asks for the project manager to
be shown.
2018-02-26 18:48:47 +01:00
Rémi Verschelde
95b8984d5f Add --quit option to help output and update manpage 2018-02-24 18:22:29 +01:00
Rémi Verschelde
23ebae01dc Refactor version macros and fix related bugs
The previous logic with VERSION_MKSTRING was a bit unwieldy, so there were
several places hardcoding their own variant of the version string, potentially
with bugs (e.g. forgetting the patch number when defined).

The new logic defines:

- VERSION_BRANCH, the main 'major.minor' version (e.g. 3.1)
- VERSION_NUMBER, which can be 'major.minor' or 'major.minor.patch',
  depending on whether the latter is defined (e.g. 3.1.4)
- VERSION_FULL_CONFIG, which contains the version status (e.g. stable)
  and the module-specific suffix (e.g. mono)
- VERSION_FULL_BUILD, same as above but with build/reference name
  (e.g. official, custom_build, mageia, etc.)
  Note: Slight change here, as the previous format had the build name
  *before* the module-specific suffix; now it's after
- VERSION_FULL_NAME, same as before, so VERSION_FULL_BUILD prefixed
  with "Godot v" for readability

Bugs fixed thanks to that:

- Export templates version matching now properly takes VERSION_PATCH
  into account by relying on VERSION_FULL_CONFIG.
- ClassDB hash no longer takes the build name into account, but limits
  itself to VERSION_FULL_CONFIG (build name is cosmetic, not relevant
  for the API hash).
- Docs XML no longer hardcode the VERSION_STATUS, this was annoying.
- Small cleanup in Windows .rc file thanks to new macros.
2018-02-23 20:15:29 +01:00
Nathan Warden
4bfb504c2f Added an auto quit and auto build flag to the command line options. 2018-02-19 16:22:55 -05:00
Rémi Verschelde
f9b292b935 Prevent loading project-specific config in Project Manager
The Project Manager should share the same settings as the editor most of the time.
The whole init stuff with Main::setup and Main::start needs a good cleanup though.

Fixes #15199.
2018-02-19 13:31:15 +01:00
Ignacio Etcheverry
dad47d8876
Merge pull request #16749 from PJB3005/18-02-16-project-manager-mono-debug-fix
Makes project manager never initialize mono debug.
2018-02-18 19:53:46 +01:00
Pieter-Jan Briers
dd19826277 Ignore tools CLI flags in non-tools builds.
Some flags were still parsed but either did nothing or broke everything.

No reason to parse them.
2018-02-17 12:24:30 +01:00
Pieter-Jan Briers
1099838079 Makes project manager never initialize mono debug.
The heuristic whether we're in the project manager inside GDMono
didn't work if the project manager was launched by not having any path
to run.

This is fixed now by making a Main::is_project_manager().
2018-02-16 16:15:35 +01:00
Rémi Verschelde
e0f43e0678
Merge pull request #15564 from RandomShaper/adpod-topmost
Add new window setting: always on top
2018-02-14 16:43:40 +01:00