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 5 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

@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
// Blend in decal; reduce opacity 55% to account for differences in Opengl/Vulkan and/or decals
albedo = mix(albedo, _editor_decal_color[i].rgb, clamp(decal * _editor_decal_color[i].a * .55, 0., .55));
// Decal fadeout from last time stamp
float fade = clamp((_editor_decal_timestamp - TIME) * 8. - 6., 0., 1.);
Copy link
Owner

Choose a reason for hiding this comment

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

What do 8 and 6 represent?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As only an offset time stamp is passed each update, those 2 values work with the offset to replicate the timer fade delay & speed of the original decal_timer.

@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 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.

if !plugin.terrain:
return
var mat_rid: RID = plugin.terrain.material.get_material_rid()

# If not a state that should show the decal, hide everything and return
if not visible or \
not plugin.terrain or \
Copy link
Owner

Choose a reason for hiding this comment

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

This line can be removed since it's now above.
Above, I prefer if not because the not gets color coded red.

@@ -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.

else:
decal.rotation.y = 0

editor_decal_rotation[0] = 0
Copy link
Owner

Choose a reason for hiding this comment

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

Please change to 0.

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