shaderlib: Add alpha_blend function, extend place_texture example, update autocomplete - implements #23
This commit is contained in:
parent
3abaf38400
commit
1635cd5b82
3 changed files with 21 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
|||
shader_type canvas_item;
|
||||
|
||||
#include "res://shaderlib/transform.gdshaderinc"
|
||||
#include "res://shaderlib/transparency.gdshaderinc"
|
||||
|
||||
//!load ./swamp.jpg
|
||||
//!load+ img2 ./grass.png
|
||||
|
@ -9,6 +10,6 @@ uniform sampler2D img2: repeat_disable, filter_nearest;
|
|||
|
||||
void fragment() {
|
||||
vec4 grass = place_texture(img2, UV, TEXTURE_PIXEL_SIZE, vec2(0, .47), vec2(1));
|
||||
grass.rgb += (vec3(0.03, 0.07, 0.11) - ((UV.y - .8) * 0.15)); // color correction
|
||||
COLOR.rgb = mix(COLOR.rgb, grass.rgb, grass.a);
|
||||
grass.rgb += (vec3(0.02, 0.07, 0.1) - ((UV.y - .8) * 0.15)); // color correction
|
||||
COLOR = alpha_blend(COLOR, grass);
|
||||
}
|
||||
|
|
9
shaderlib/transparency.gdshaderinc
Normal file
9
shaderlib/transparency.gdshaderinc
Normal file
|
@ -0,0 +1,9 @@
|
|||
|
||||
// Alpha Blending a over b after Bruce A. Wallace
|
||||
// sources:
|
||||
// - https://en.wikipedia.org/wiki/Alpha_compositing
|
||||
vec4 alpha_blend(vec4 b, vec4 a) {
|
||||
float alpha = a.a + (b.a * (1.0 - a.a));
|
||||
vec3 col = ((a.rgb*a.a) + ((b.rgb*b.a) * (1.0 - a.a)) / alpha);
|
||||
return vec4(col.r, col.g, col.b, alpha);
|
||||
}
|
|
@ -124,11 +124,13 @@ const gdshader_builtins = [
|
|||
# shaderlib
|
||||
var shaderlib_regex = {
|
||||
"hsv": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/hsv\.gdshaderinc\"'),
|
||||
"transform": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transform\.gdshaderinc\"')
|
||||
"transform": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transform\.gdshaderinc\"'),
|
||||
"transparency": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transparency\.gdshaderinc\"')
|
||||
}
|
||||
const shaderlib_functions = {
|
||||
"hsv": ["rgb2hsv", "hsv2rgb", "hsv_offset", "hsv_multiply"],
|
||||
"transform": ["place_texture"]
|
||||
"transform": ["place_texture"],
|
||||
"transparency": ["alpha_blend"],
|
||||
}
|
||||
#
|
||||
# configure Highlighter
|
||||
|
@ -182,8 +184,9 @@ func _on_code_edit_code_completion_requested():
|
|||
code_editor.add_code_completion_option(CodeEdit.KIND_FUNCTION, k, k+"(", Color.INDIAN_RED)
|
||||
# shaderlib #
|
||||
var shader_code = code_editor.text
|
||||
for key in shaderlib_functions:
|
||||
for key in shaderlib_regex:
|
||||
if shaderlib_regex[key].search(shader_code) != null:
|
||||
if key in shaderlib_functions:
|
||||
for k in shaderlib_functions[key]:
|
||||
code_editor.code_completion_prefixes.append(k)
|
||||
code_editor.add_code_completion_option(CodeEdit.KIND_FUNCTION, k, k+"(", Color.INDIAN_RED)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue