summaryrefslogtreecommitdiff
path: root/servers/rendering_server.cpp
AgeCommit message (Collapse)Author
2022-10-13Optimize Convex CollisionJuan Linietsky
Implements the Gauss Mapping optimization to SAT convex collision test. * Described [here](https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdc2013/slides/822403Gregorius_Dirk_TheSeparatingAxisTest.pdf) by Dirk Gregorius. * Requires adding of face information to edges in MeshData * Took the chance to convert MeshData to LocalVector for performance.
2022-10-11Merge pull request #67000 from RandomShaper/split_render_furtherRémi Verschelde
Polish rendering driver refactor further
2022-10-06Polish rendering driver refactor furtherPedro J. Estébanez
Mainly: - Make `max_descriptors_per_pool` project setting Vulkan-specific. - Use a common, render driver agnostic magic FourCC for shader binary data. - Downgrade spirv_reflect to Vulkan-only dependency. - Add a `RENDER_DRIVER_*` macro to GLSL shader code for per-driver customizations.
2022-10-06Use a giant UBO to optimize performance in 2Dclayjohn
This removes the countless small UBO writes we had before and replaces them with a single large write per render pass. This results in much faster rendering on low-end devices but improves speed on all devices.
2022-10-05Fix crash when executing `RenderingServer.mesh_surface_get_format_offset`Haoyu Qiu
2022-09-22Fix various -Wmaybe-uninitialized warnings from GCC 12.2.1Rémi Verschelde
Not sure why I didn't get those before, it may be due to upstream changes (12.2.1 is a moving target, it's basically 12.3-dev), or simply rebuilding Godot from scratch with different options.
2022-09-19Split rendering driver project setting into renderer_name and ↵clayjohn
rendering_driver. To differentiate between a driver (e.g. Vulkan or D3D12) and a renderer (e.g. clustered or mobile renderer).
2022-09-14Decode octahedral compression when retreiving meshesclayjohn
2022-09-02Merge pull request #65170 from KoBeWi/your_argument_is_TypedArrayRémi Verschelde
2022-09-02Merge pull request #64952 from Chaosus/vs_rename_uniform_to_paramRémi Verschelde
2022-09-01Merge pull request #60185 from Calinou/environment-fog-and-sky-affectRémi Verschelde
2022-09-01Add Environment properties to control fog rendering on background skyHugo Locurcio
Values lower than 1.0 can be used to make the fog rendering not fully obstruct the sky. This can be desired when using fog as a purely atmospheric effect, without intending to use fog for open world fog fading. When set to 0.0, fog rendering behavior will be similar to Godot 3.x where sky rendering was never affected by fog.
2022-09-01Change Array arguments to TypedArraykobewi
2022-09-01Rename `uniform` to `parameter` across the engineYuri Rubinsky
2022-08-31Implement Physical Light Units as an optional setting.clayjohn
This allows light sources to be specified in physical light units in addition to the regular energy multiplier. In order to avoid loss of precision at high values, brightness values are premultiplied by an exposure normalization value. In support of Physical Light Units this PR also renames CameraEffects to CameraAttributes.
2022-08-30Add a per-light volumetric fog energy propertyHugo Locurcio
Per-light energy gives more control to the user on the final result of volumetric fog. Specific lights can be fully excluded from volumetric fog by setting their volumetric fog energy to 0, which improves performance slightly. This can also be used to prevent short-lived dynamic effects from poorly interacting with volumetric fog, as it's updated over several frames by default unless temporal reprojection is disabled. Volumetric fog shadows now obey Light3D's Shadow Opacity property as well. The shadow fog fade property was removed as it had little visible impact on the final scene's rendering.
2022-08-30Merge pull request #63003 from Geometror/msaa-2dRémi Verschelde
2022-08-26Merge pull request #64422 from bruvzg/make_fonts_unbearably_ugly_2.0Rémi Verschelde
2022-08-24Replace Array return types with TypedArray 3kobewi
2022-08-23Replace Array return types with TypedArray 2kobewi
2022-08-23Add font LCD sub-pixel anti-aliasing support.bruvzg
2022-08-22Merge pull request #60309 from The-O-King/octRémi Verschelde
2022-08-19Remove requirement to have vertex positions when creating a mesh. Meshes can ↵clayjohn
now be constructed from an index buffer alone
2022-08-13Octahedral Normal/Tangent CompressionOmar El Sheikh
Implementation of Octahedral normal compression into Godot 4.0
2022-08-13Implement MSAA for 2D [Vulkan only]Hendrik Brucker
2022-08-07Add a shadow opacity property to Light3DHugo Locurcio
This can be used to make shadows translucent for a specific light. The light distance fade system also uses this to smoothly fade the shadow when the light fade transition distance is greater than 0.
2022-08-04Rename shader parameter uniform setter/getter methods for consistencyHugo Locurcio
`shader_uniform` is now consistenly used across both per-shader and per-instance shader uniform methods. This makes methods easier to find in the class reference when looking for them.
2022-08-03Add Nearest Mipmap Anisotropic filter option to decals and projectorsHugo Locurcio
This is consistent with the BaseMaterial3D filtering options. It can be used for high-quality pixel art textures that remain sharp when viewed at oblique angles, but prevents them from becoming grainy thanks to mipmaps.
2022-07-29Merge pull request #46557 from asmaloney/remove-impossible-conditionRémi Verschelde
Remove impossible condition in RenderingServer::mesh_surface_make_offsets_from_format
2022-07-28Merge pull request #59840 from Calinou/renderingserver-global-uniform-renameRémi Verschelde
2022-07-28Rename RenderingServer global shader uniform methods to be more explicitHugo Locurcio
The `global_shader_uniform` name is longer, but it makes it much easier to find the methods when searching in the class reference.
2022-07-28Allow changing mipmap LOD bias when FSR 1.0 scaling is not usedHugo Locurcio
Mipmap LOD bias can be useful to improve the appearance of distant textures without increasing anisotropic filtering (or in situations where anisotropic filtering is not effective). `fsr_mipmap_bias` was renamed to `texture_mipmap_bias` accordingly. The property hint now allows for greater precision as well.
2022-07-25Remove ThreadWorkPool, replace by WorkerThreadPoolJuan Linietsky
The former needs to be allocated once per usage. The later is shared for all threads, which is more efficient. It can also be better debugged.
2022-07-22Clean up Shader Preprocessorreduz
* Moved preprocessor to Shader and ShaderInclude * Clean up RenderingServer side * Preprocessor is separate from parser now, but it emits tokens with include location hints. * Improved ShaderEditor validation code * Added include file code completion * Added notification for all files affected by a broken include.
2022-07-17Adding Variable Rate Shading support to GodotBastiaan Olij
Improve GI renderer and add VRS support Implement render device has_feature and move subgroup settings to limit_get
2022-07-13Rename soft shadow quality project settings for easier searchingHugo Locurcio
`rendering/quality/shadows` is now `rendering/quality/positional_shadow` to explicitly denote that the settings only affect positional light shadows, not directional light shadows. Shadow atlas settings now contain the word "atlas" for easier searching. Soft shadow quality settings were renamed to contain the word "filter". This makes the settings appear when searching for "filter" in the project settings dialog, like in Godot 3.x.
2022-06-19Automatically update the editor viewport when 3D scaling options are changedHugo Locurcio
This allows for previewing the effects of the various 3D scaling project settings without having to restart the editor.
2022-06-07Initial TAA implementationjfons
Initial TAA support based on the implementation in Spartan Engine. Motion vectors are correctly generated for camera and mesh movement, but there is no support for other things like particles or skeleton deformations.
2022-06-01Ensure has_os_features is safely called as it can't be called from within ↵Bastiaan Olij
the construct of RenderingServerDefault on which it relies
2022-05-25Add Cone and Cylinder shapes to FogVolumeHugo Locurcio
This complements the existing Ellipsoid and Box local fog shapes. This can be used to represent a light cone coming from a SpotLight.
2022-05-16Add basic lighting to GLES3 renderer.clayjohn
This includes all three light types and IBL, but does not include shadows or any form of GI
2022-05-12Merge pull request #60976 from Calinou/fsr-rename-property-hintRémi Verschelde
2022-05-12Basic 3D renderingclayjohn
2022-05-12Rename remaining references of FSR to FSR 1.0Hugo Locurcio
With FSR 2.0 around the corner, we should avoid any ambiguity by explicitly stating the version number.
2022-05-03Add `get_video_adapter_api_version()` to RenderingServerHugo Locurcio
This method can be used to get the graphics API version currently in use (such as Vulkan). It can be used by projects for troubleshooting or statistical purposes.
2022-04-20Fix more issues found by cppcheck.bruvzg
2022-04-12Restore antialiasing for `draw_line`Yuri Roubinsky
2022-04-06Fix some issues found by cppcheck.bruvzg
2022-03-18Merge pull request #49738 from Calinou/ssao-gi-default-half-resolutionRémi Verschelde
Compute SSAO at half resolution by default
2022-03-17Replace DirectionalLight3D's `use_in_sky_only` with `sky_mode` enumHugo Locurcio
3 options are available: - Light and Sky (default) - Light Only (new) - Sky Only (equivalent to `use_in_sky_only = true`) Co-authored by: clayjohn <claynjohn@gmail.com>