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:
parent
25fd6026be
commit
f7e866e9cb
5 changed files with 40 additions and 1 deletions
|
@ -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")
|
||||
|
|
8
src/Shaders/Greyscale.gdshader
Normal file
8
src/Shaders/Greyscale.gdshader
Normal 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);
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue