Arnklit / Waterways

A tool to generate river meshes with flow and foam maps based on bezier curves.
https://github.com/Arnklit/WaterGenGodotDemo
MIT License
1.05k stars 72 forks source link

GD4 Errors & Other issues #20

Open TokisanGames opened 1 year ago

TokisanGames commented 1 year ago

Describe the bug I'm setting up Waterways in gd4 on Out of the Ashes. I noticed error spam on the console, which slows down the engine and several other usage bugs.

It does work (for water) even across scene reloading.

To Reproduce 1.I opened the test scene, then receive the following errors on repeat:

ERROR: Condition "rb.is_null()" is true.
   at: _render_buffers_copy_screen_texture (servers/rendering/renderer_rd/renderer_scene_render_rd.cpp:402)
ERROR: Condition "rb.is_null()" is true.
   at: _render_buffers_copy_depth_texture (servers/rendering/renderer_rd/renderer_scene_render_rd.cpp:441)

If I hide UpperRiver and LowerRiver the errors stop. No errors in the debugger.

  1. In my own project, I tried creating a new River node. I got these errors on my console:
    _edited_node set to null
    ERROR: Cannot get class 'Buoyant'.
    at: (core/object/class_db.cpp:382)
    ERROR: Cannot get class 'River'.
    at: (core/object/class_db.cpp:382)
    ERROR: Cannot get class 'WaterSystem'.
    at: (core/object/class_db.cpp:382)

Once added, more debug messages:

update_property in editor_property.gd
update_property in editor_property.gd

The river worked. No error spam as in 1. Upon closing and reopening the scene I do get the rb.is_null a few times, then it stops.

Generating the flowmap dumped a bunch of debug messages on the console.

  1. Mat_edge_fade doesn't do anything

  2. Shader parameters could use defaults to reset back to. And the default settings are wrong in the inspector. That is, when you make a new river node, roughness, normal scale, uv scale are all 0. But the values on screen are not that. I don't know what they are, and if you change them, then manually reset the values back to zero, the display is weird.

  3. Switched to Lava material and got this on the console, and a grey material:

    SCRIPT ERROR: Invalid get index 'mat_emission_color' (on base: 'Node3D ()').
          at: _update_property (res://addons/waterways/editor_property.gd:28)
  4. Adding a new river into my scene and moving it around with the gizmo (not adding the path yet), I suddenly got this error message 7x in snap to colliders mode:

    SCRIPT ERROR: Invalid call. Nonexistent function 'reset_all_colliders' in base 'GDScript'.
          at: _on_option_change (res://addons/waterways/plugin.gd:137)

I'm using a clipmesh terrain with a small heightmap collision shape that follows the player (and editor camera) around. If it's looking for collision that shape will move away whenever the camera moves away.

  1. I changed to PlaneXZ and got this message on the console trying to move a node:

    SCRIPT ERROR: Trying to assign value of type 'float' to a variable of type 'Vector3'.
          at: _set_handle (res://addons/waterways/river_gizmo.gd:266)
  2. I tried making a new point w/ snap to colliders on, near the ground where my camera and collision is. I got this error message:

SCRIPT ERROR: Invalid call. Nonexistent function 'reset_all_colliders' in base 'GDScript'.
          at: _on_option_change (res://addons/waterways/plugin.gd:137)
SCRIPT ERROR: Invalid call to function 'intersect_ray' in base 'GodotPhysicsDirectSpaceState3D'. Expected 1 arguments.
          at: _forward_3d_gui_input (res://addons/waterways/plugin.gd:220)
  1. I made a river with 8 nodes. Clicking and dragging a node is quite slow after this. It takes 1-4 seconds to acknowledge that you've grabbed a widget, then updating it goes about 1fps.

Environment Win11/64 Vulkan RTX3070 Godot 4 Beta 6 c47c44ad8b9be5cf89ed669c0b6804f6172368e6

Arnklit commented 1 year ago

Sorry, yeah it's still not ready for prime time, even if I have a lot of it working. I'll do a release when all of it is sorted. I'm surprised about the edge fade though, I thought I fixed that yesterday. The lacking of reverting values is a bug in Godot 4.0 that is getting fixed.

I'll look through all this and be sure it's covered, but yeah until I do a release and update docs, consider the Godot 4.0 branch very experimental.

TokisanGames commented 1 year ago

After upgrading to beta 7, edge fade works, and modifying the curve w/ 8 points is a normal speed again. Applied strike through to those points.

TokisanGames commented 1 year ago

When Use physical lights are enabled, the water transparency turns black:

image

image

Arnklit commented 1 year ago

huh, that is weird. Thanks I'll investigate.

Arnklit commented 1 year ago

OK, so refraction basically just doesn't work. The screentexture is simply black when physical light units is enabled. I'll log a bug.

Bug: https://github.com/godotengine/godot/issues/69847

TokisanGames commented 1 year ago

Now that 4.0-stable has been released, do you have a plan to update waterways? I get tons of error spam on opening, switching, and closing scenes. Lava doesn't work. Water works alright but the flow map is a bit wonky. Etc.

Arnklit commented 1 year ago

Hiya, yes I do plan to get back to it now. simply just been swamped with other work. I don't actually think it's a lot of work to fix what remains. I'll see if I can find a day next week to do some serious work on it.

tailsc commented 1 year ago

When do you expect it to be ready for godot? thanks for your work.

Arnklit commented 1 year ago

Hi @tailsc. I've put it on hold until there is some proper terrain solution to use in Godot 4.0. It's simply not fun to work with when you don't have a terrain solution, so I have no enthusiasm for it at all at the moment. It sounds like some terrain plugins will soon be available and I'll pick it back up.

TokisanGames commented 1 year ago

I've also been wondering. Ok, well we're working on terrain. This gives me more motivation for terrain so you can finish water. 💪

CrimsonDemon001 commented 1 year ago

@TokisanGames how you get it to work I get 6 errors. res://addons/waterways/river_manager.gd:446 - Parse Error: Cannot infer the type of "new_dir" variable because the value doesn't have a set type. res://addons/waterways/river_manager.gd:451 - Parse Error: Cannot infer the type of "new_dir" variable because the value doesn't have a set type. res://addons/waterways/inspector_plugin.gd:13 - Parse Error: The function signature doesn't match the parent. Parent signature is "_parse_property(Object, Variant.Type, String, PropertyHint, String, PropertyUsageFlags, bool) -> bool". res://addons/waterways/plugin.gd:15 - Invalid call. Nonexistent function 'new' in base 'GDScript'. editor/editor_plugin.cpp:763 - Condition "!p_plugin.is_valid()" is true. res://addons/waterways/plugin.gd:35 - Invalid call. Nonexistent function 'connect' in base 'Nil'. been racking my brain on it for the past few days.

oh @Arnklit take your time man your addon is amazing quality gives a lot of us new devs with many big game plans to work with to make better games for everyone so thank you.

TokisanGames commented 1 year ago

I patched the code to get it functional. This allows us to have our water work in Out of the Ashes in 4.0.2. However, it's not polished. I get a lot of error spam sometimes when switching scenes, and Lava doesn't work right (it's grey and won't display on top of our terrain).

diff.txt

TokisanGames commented 1 year ago

Hi @tailsc. I've put it on hold until there is some proper terrain solution to use in Godot 4.0. It's simply not fun to work with when you don't have a terrain solution, so I have no enthusiasm for it at all at the moment. It sounds like some terrain plugins will soon be available and I'll pick it back up.

Ok sir, we made terrain for you. https://github.com/outobugi/Terrain3D

Also mentioned you in the promotional video: https://www.youtube.com/watch?v=Aj9vWIEaFXg

Arnklit commented 1 year ago

Looks amazing @TokisanGames. As I mentioned in another bug, I'll try and get a small update out to get WW back to working in 4.x first thing in August.

TokisanGames commented 1 year ago

@Arnklit Hey how's it going? Any updates to your schedule?

Arnklit commented 1 year ago

lol, yeah deadlines got pushed and then I was on vacation and then I was sick. I'm actually finally back in business this week, so things should start happening :D.

bnjmntmm commented 12 months ago

@Arnklit just a small ping. upppss

tehKaiN commented 9 months ago

I just tried to integrate this plugin into my ongoing project, with mixed results - some stuff kinda works on godot4 branch, some doesn't. Some stuff I managed to fix instantly, some needs more careful reading of the project sources.

@Arnklit would you accept PRs with fixes if I create one, or do you want to fix it yourself?

Arnklit commented 9 months ago

I'd accecpt PRs. I feel like I fixed most of the remaining stuff last I looked at it, but I still don't have a proper solution for the watersystem because of the lack of 3D HDR and keep linear in viewport rendering for Godot 4.x, so I can't really finish it up.

TokisanGames commented 9 months ago

We have it working fine in Out of the Ashes. The lava shader was broken and I got it kinda working but it needs some cosmetic love. I don't see any real technical problems with GD4 preventing this plugin from supporting it.

image

image

tehKaiN commented 9 months ago

Ditto. I don't need lava, but I saw that there's version error in its shader when trying switching to it. Haven't tackled that in my PR.

the lack of 3D HDR and keep linear in viewport rendering for Godot 4.x

Regarding rendering, I'm a coder so I only distinguish coder-colors - what's particularly wrong with its current state? Do you perhaps have some pictures illustrating it?

Arnklit commented 9 months ago

the viewport rendering is used for the watersystem. it's to render out the textures for the physics and the sRGB conversions and low bit rate cases the problems.

MasterDingo commented 2 months ago

the viewport rendering is used for the watersystem. it's to render out the textures for the physics and the sRGB conversions and low bit rate cases the problems.

Doesn't it make sense to use a compute shader instead? They are well supported in Godot 4.x