1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-20 12:33:14 +00:00

Shader vision - Grayscale view (#646)

* ShaderVision Funcionality

* reference to ShaderVision

* Greyscale shader

* A minor code improvement

* decided on a checkbox

* decided on a checkbox

i foresaw the earlier implementation isn't required so i decided on a checkbox

* removed unneeded code

* reverted a mistake commit

* Update TopMenuContainer.gd

* Precieved Brightness
This commit is contained in:
Variable 2022-02-12 03:47:26 +05:00 committed by GitHub
parent 25fd6026be
commit f7e866e9cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 40 additions and 1 deletions

View file

@ -85,6 +85,7 @@ var native_cursors := false
var cross_cursor := true
# View menu options
var greyscale_view := false
var mirror_view := false
var draw_grid := false
var draw_pixel_grid := false
@ -124,6 +125,7 @@ onready var cameras := [camera, camera2, camera_preview]
onready var horizontal_ruler: BaseButton = control.find_node("HorizontalRuler")
onready var vertical_ruler: BaseButton = control.find_node("VerticalRuler")
onready var transparent_checker: ColorRect = control.find_node("TransparentChecker")
onready var greyscale_vision: ColorRect = control.find_node("GreyscaleVision")
onready var preview_zoom_slider: VSlider = control.find_node("PreviewZoomSlider")
onready var tool_panel: ScrollContainer = control.find_node("Tools")

View file

@ -0,0 +1,8 @@
shader_type canvas_item;
void fragment() {
COLOR = texture(SCREEN_TEXTURE, SCREEN_UV);
// formula from "https://stackoverflow.com/a/596241"
float avg = ((0.2126 * COLOR.r) + (0.7152 * COLOR.g) + (0.0722 * COLOR.b));
COLOR.rgb = vec3(avg);
}

View file

@ -5,6 +5,7 @@ enum EditMenuId { UNDO, REDO, COPY, CUT, PASTE, DELETE, NEW_BRUSH, PREFERENCES }
enum ViewMenuId {
TILE_MODE,
WINDOW_OPACITY,
GREYSCALE_VIEW,
PANELS,
LAYOUTS,
MIRROR_VIEW,
@ -145,6 +146,7 @@ func _setup_view_menu() -> void:
var view_menu_items := { # order as in ViewMenuId enum
"Tile Mode": 0,
"Window Opacity": 0,
"Greyscale View": 0,
"Panels": 0,
"Layouts": 0,
"Mirror View": InputMap.get_action_list("mirror_view")[0].get_scancode_with_modifiers(),
@ -414,6 +416,8 @@ func view_menu_id_pressed(id: int) -> void:
ViewMenuId.WINDOW_OPACITY:
window_opacity_dialog.popup_centered()
Global.dialog_open(true)
ViewMenuId.GREYSCALE_VIEW:
_toggle_greyscale_view()
ViewMenuId.MIRROR_VIEW:
_toggle_mirror_view()
ViewMenuId.SHOW_GRID:
@ -474,6 +478,12 @@ func set_layout(id: int) -> void:
view_menu.set_item_checked(ViewMenuId.ZEN_MODE, false)
func _toggle_greyscale_view() -> void:
Global.greyscale_view = !Global.greyscale_view
Global.greyscale_vision.visible = Global.greyscale_view
view_menu.set_item_checked(ViewMenuId.GREYSCALE_VIEW, Global.greyscale_view)
func _toggle_mirror_view() -> void:
Global.mirror_view = !Global.mirror_view
var marching_ants_outline: Sprite = Global.canvas.selection.marching_ants_outline

View file

@ -7,6 +7,13 @@ onready var main_canvas_container = Global.main_canvas_container
func _ready() -> void:
update_transparent_shader()
#Set anchors for ShaderVision
Global.greyscale_vision.visible = false
Global.greyscale_vision.anchor_left = ANCHOR_BEGIN
Global.greyscale_vision.anchor_top = ANCHOR_BEGIN
Global.greyscale_vision.anchor_right = ANCHOR_END
Global.greyscale_vision.anchor_bottom = ANCHOR_END
func _on_main_canvas_item_rect_changed() -> void:
update_transparent_shader()

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=40 format=2]
[gd_scene load_steps=42 format=2]
[ext_resource path="res://src/UI/Tools.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/UI/Canvas/CanvasPreview.tscn" type="PackedScene" id=2]
@ -7,6 +7,7 @@
[ext_resource path="res://src/UI/TransparentChecker.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/UI/Canvas/Rulers/HorizontalRuler.gd" type="Script" id=6]
[ext_resource path="res://src/UI/Canvas/CameraMovement.gd" type="Script" id=7]
[ext_resource path="res://src/Shaders/Greyscale.gdshader" type="Shader" id=8]
[ext_resource path="res://src/Shaders/TransparentChecker.shader" type="Shader" id=9]
[ext_resource path="res://addons/dockable_container/layout.gd" type="Script" id=14]
[ext_resource path="res://src/UI/CanvasPreviewContainer.tscn" type="PackedScene" id=16]
@ -151,6 +152,9 @@ shader_param/rect_size = Vector2( 0, 0 )
shader_param/follow_movement = false
shader_param/follow_scale = false
[sub_resource type="ShaderMaterial" id=27]
shader = ExtResource( 8 )
[sub_resource type="ShaderMaterial" id=3]
shader = ExtResource( 9 )
shader_param/size = 10.0
@ -277,6 +281,14 @@ current = true
zoom = Vector2( 0.15, 0.15 )
script = ExtResource( 7 )
[node name="CanvasLayer" type="CanvasLayer" parent="DockableContainer/Main Canvas/HSplitContainer/ViewportandVerticalRuler/ViewportContainer/Viewport"]
[node name="GreyscaleVision" type="ColorRect" parent="DockableContainer/Main Canvas/HSplitContainer/ViewportandVerticalRuler/ViewportContainer/Viewport/CanvasLayer"]
material = SubResource( 27 )
margin_right = 40.0
margin_bottom = 40.0
mouse_filter = 2
[node name="ViewportContainer2" type="ViewportContainer" parent="DockableContainer/Main Canvas/HSplitContainer"]
margin_left = 872.0
margin_right = 872.0