mirror of
https://github.com/HarmonyHoney/ROTA.git
synced 2026-07-17 16:46:17 +00:00
day / night cycle on BG! (:
This commit is contained in:
parent
903acc41df
commit
72e821bb9c
3 changed files with 56 additions and 6 deletions
|
|
@ -3,14 +3,43 @@ extends CanvasLayer
|
|||
|
||||
onready var mat : ShaderMaterial = $ColorRect.material
|
||||
export var colors = 0 setget set_colors
|
||||
export(PoolColorArray) var palette : PoolColorArray = ["0062ff", "00eaff", "af00bf", "0079db", "ff00ff", "009dff", "00eaff", "0062ff", "6666ff", "00004d"]
|
||||
export(Array, PoolColorArray) var palettes
|
||||
var step_colors : Array
|
||||
|
||||
var clock := 0.0
|
||||
export var daytime := 60.0
|
||||
var time := 10.0
|
||||
var frac = 0.0
|
||||
|
||||
func _ready():
|
||||
if Engine.editor_hint: return
|
||||
|
||||
self.colors = 0
|
||||
|
||||
func set_colors(arg := 0):
|
||||
colors = posmod(arg, palette.size() / 2)
|
||||
#print("BG: ", colors, " pal: ", palette.size(), " / 2 = ", palette.size() / 2)
|
||||
func _process(delta):
|
||||
if Engine.editor_hint: return
|
||||
|
||||
clock += delta
|
||||
if clock > time:
|
||||
clock = fposmod(clock, time)
|
||||
step_colors.append(step_colors.pop_front())
|
||||
|
||||
frac = clock / time
|
||||
|
||||
var c1 = step_colors[0].linear_interpolate(step_colors[1], frac)
|
||||
var c2 = step_colors[1].linear_interpolate(step_colors[2], frac)
|
||||
|
||||
if mat:
|
||||
mat.set_shader_param("col1", palette[colors * 2])
|
||||
mat.set_shader_param("col2", palette[(colors * 2) + 1])
|
||||
mat.set_shader_param("col1", c1)
|
||||
mat.set_shader_param("col2", c2)
|
||||
|
||||
|
||||
func set_colors(arg := 0):
|
||||
if palettes.size() > 0:
|
||||
colors = posmod(arg, palettes.size())
|
||||
step_colors = palettes[colors]
|
||||
time = daytime / max(step_colors.size(), 1.0)
|
||||
print(time)
|
||||
if mat:
|
||||
mat.set_shader_param("col1", step_colors[0])
|
||||
mat.set_shader_param("col2", step_colors[1])
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ shader_param/col2 = Color( 0, 0.917647, 1, 1 )
|
|||
[node name="BG" type="CanvasLayer"]
|
||||
layer = -5
|
||||
script = ExtResource( 2 )
|
||||
palettes = [ PoolColorArray( 0, 0.384314, 1, 1, 0, 0.917647, 1, 1, 0.686275, 0, 0.74902, 1, 0, 0.47451, 0.858824, 1, 1, 0.329412, 0, 1 ), PoolColorArray( 0, 0.917647, 1, 1, 0, 0.384314, 1, 1, 0.4, 0.4, 1, 1, 0, 0, 0.301961, 1 ), PoolColorArray( 1, 0, 1, 1, 0, 0.615686, 1, 1, 0.686275, 0, 0.74902, 1, 0, 0.47451, 0.858824, 1 ), PoolColorArray( 0, 0.384314, 1, 1, 0, 0.917647, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0.623529, 1, 1, 1, 0, 1, 0.780392, 0, 1, 1 ) ]
|
||||
daytime = 30.0
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="."]
|
||||
material = SubResource( 2 )
|
||||
|
|
|
|||
19
src/shader/sky2.gdshader
Normal file
19
src/shader/sky2.gdshader
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
shader_type canvas_item;
|
||||
|
||||
uniform vec4 col0 : hint_color = vec4(0.0, 0.38, 1.0, 1.0);
|
||||
uniform vec4 col1 : hint_color = vec4(0.0, 0.92, 1.0, 1.0);
|
||||
uniform vec4 col2 : hint_color = vec4(0.0, 0.92, 1.0, 1.0);
|
||||
uniform vec4 col3 : hint_color = vec4(0.0, 0.38, 1.0, 1.0);
|
||||
|
||||
uniform float time_scale : hint_range(0.0, 1.0) = 1.0;
|
||||
uniform float time = 30.0;
|
||||
|
||||
void fragment(){
|
||||
float f = abs((mod(TIME, time) / time) - 0.5) * 2.0;
|
||||
vec4 c1 = mix(col0, col2, f);
|
||||
vec4 c2 = mix(col1, col3, f);
|
||||
|
||||
//mix(col0, col2, )
|
||||
COLOR = mix(c1, c2, UV.y);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue