Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move cursor decals to shader #538

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

Xtarsia
Copy link
Contributor

@Xtarsia Xtarsia commented Nov 2, 2024

removes all decals, closes #534

Adds a crosshair, with a threshold setting in the advanced menu, closes #533

Consolidate uniforms to just brush and ring textures

Todo:

  • use crosshair instead of cross_hair
  • rework timer to lerp editor_decal_color uniform alpha to 0.
  • crosshair opacity to match editor_decal_color alpha
  • apply color space correction when updating editor_decal_color uniform RGB values if in compatibility
  • ensure correct position for bush operations

@TokisanGames
Copy link
Owner

Great!

  • What do you think about taking care of Visibility ring around cursor when small #533 in this PR as well and adding a larger open crosshair or circle around the cursor when small (or always)?

  • Please remove UI.gd:_on_setting_changed():update_decal(). It's annoying to have it popup all the time when changing texture colors. I have it on mine but havn't pushed it yet.

  • Why do we need separate decals for the gradients? Are there any ideas or reasons for having a third decal? What do you think if instead of three open slots for textures, we specify them: 0= current brush, 1=ring, 2=crosshair/etc? Then in the shader we can name them such as use them by name rather than editor_decal[0]?

@TokisanGames TokisanGames added this to the 1.0 milestone Nov 2, 2024
@TokisanGames TokisanGames added the shaders Shader development label Nov 2, 2024
@Xtarsia Xtarsia marked this pull request as ready for review November 2, 2024 13:12
@Xtarsia
Copy link
Contributor Author

Xtarsia commented Nov 2, 2024

ok im fairly happy with the cross hair now.

size 0;
afar:
image
upclose:
image

size 50;
afar:
image
upclose:
image

threshold setting in advanced, defaults to 16
image

@Xtarsia
Copy link
Contributor Author

Xtarsia commented Nov 2, 2024

shorter line length feels better
image

Copy link
Owner

@TokisanGames TokisanGames left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this. In my review copy I rebased it, then tested.

  • crosshair(s) seems to be most widely used as a single word. So all cross_hair references could drop the underscore.

  • I'd like to see the crosshair lines the same opacity as the brush so they match better.

  • I don't see the fade on timeout, though I see there's code in there. The only way to make it disappear is a single right click, but it reappears when the mouse moves. There are times when the camera is close and the cursor is big, and we want to adjust something in the inspector and see the results on the terrain w/o the decal. Currently the process is to wait until it disappears then adjust. We need either the timeout, or maybe a better alternative is to hide the cursor as soon as the mouse leaves the viewport, or both.

  • In this PR, with Paint mode, if you right-click-hold and move the camera, let go (cursor invisible), click-hold and paint, the cursor will appear at a wrong spot and paint, then jump to where it should be and continue painting.

  • Comptability mode, Raise 100% strength, white decal Brightness is way too bright. As well as slope, spray, foliage ring. The other colors are acceptable. Forward foliage ring is a bit bright as well.

  • I'm wondering if the lines should change thickness/size based on the brush size. 🤔

  • Can be rebased and squashed to one commit.

project/addons/terrain_3d/src/ui.gd Outdated Show resolved Hide resolved
@@ -258,7 +243,6 @@ func _on_setting_changed() -> void:
return
brush_data = tool_settings.get_settings()
brush_data["asset_id"] = plugin.asset_dock.get_current_list().get_selected_id()
update_decal()
Copy link
Owner

@TokisanGames TokisanGames Dec 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I believe this did is showed the decal when the brush_size gets larger or smaller. Currently the decal size doesn't change on adjustment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove UI.gd:_on_setting_changed():update_decal(). It's annoying to have it popup all the time when changing texture colors. I have it on mine but havn't pushed it yet.

I think changing colors happens much less frequently than changing brush sizes, so adding this line back in is the correct call.

project/addons/terrain_3d/src/ui.gd Outdated Show resolved Hide resolved
@Xtarsia
Copy link
Contributor Author

Xtarsia commented Jan 3, 2025

  • In this PR, with Paint mode, if you right-click-hold and move the camera, let go (cursor invisible), click-hold and paint, the cursor will appear at a wrong spot and paint, then jump to where it should be and continue painting.

This happens on main too. Its related to get_intersection() GPU mode problems.

@@ -157,36 +157,39 @@ func _forward_3d_gui_input(p_viewport_camera: Camera3D, p_event: InputEvent) ->

_read_input(p_event)

## Setup active camera & viewport
# Always update this for all inputs, as the mouse position can move without
# necessarily being a InputEventMouseMotion object. get_intersection() also
Copy link
Owner

@TokisanGames TokisanGames Jan 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as the mouse position can move without necessarily being a InputEventMouseMotion

👀🤯

@TokisanGames
Copy link
Owner

Given the new changes to the shader, these tasks could be addressed, if you're up for it:

  • Audit the shader comments where they say 3 lookups and make sure those are accurate for each section
  • Review shader design and offer updates to things that have changed, or new information that would be useful to devs
  • Ensure the tip on adding a custom map is still accurate.

@Xtarsia
Copy link
Contributor Author

Xtarsia commented Jan 4, 2025

what I wrote in the docs might need some more work.

the last commit is a bit cheeky, but updates the demo textures, and applies some detiling to them. Also made the grass a bit smaller too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
shaders Shader development
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Move cursor decals to shader Visibility ring around cursor when small
2 participants