Object info and hsv nodes
This commit is contained in:
parent
9afaaabbcb
commit
2f80c4baf4
|
@ -45,6 +45,7 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
|
|||
wrd = bpy.data.worlds['Arm']
|
||||
|
||||
print('\nArmory v' + wrd.arm_version)
|
||||
print('OS: ' + arm.utils.get_os() + ', Target: ' + state.target)
|
||||
|
||||
# Clean compiled variants if cache is disabled
|
||||
if wrd.arm_cache_shaders == False:
|
||||
|
@ -443,7 +444,7 @@ def on_compiled(mode): # build, play, play_viewport, publish
|
|||
krom_location = sdk_path + '/linux64/Krom/linux'
|
||||
krom_path = krom_location + '/Krom'
|
||||
os.chdir(krom_location)
|
||||
state.playproc = subprocess.Popen([krom_path, arm.utils.get_fp() + '/build/window/krom', arm.utils.get_fp() + '/build/window/krom-resources'], stderr=subprocess.PIPE)
|
||||
state.playproc = subprocess.Popen([krom_path, arm.utils.get_fp() + '/build/window/krom', arm.utils.get_fp() + '/build/window/krom-resources', '--nosound'], stderr=subprocess.PIPE)
|
||||
watch_play()
|
||||
|
||||
def clean_cache():
|
||||
|
|
|
@ -540,16 +540,13 @@ def parse_rgb(node, socket):
|
|||
return 'pow({0}, vec3({1}))'.format(out_col, gamma)
|
||||
|
||||
elif node.type == 'HUE_SAT':
|
||||
# hue = parse_value_input(node.inputs[0])
|
||||
# sat = parse_value_input(node.inputs[1])
|
||||
# val = parse_value_input(node.inputs[2])
|
||||
# fac = parse_value_input(node.inputs[3])
|
||||
out_col = parse_vector_input(node.inputs[4])
|
||||
# curshader.add_function(\
|
||||
# """vec3 hue_sat(const float hue, const float sat, const float val, const float fac, const vec3 col) {
|
||||
# }
|
||||
# """)
|
||||
return out_col
|
||||
curshader.add_function(functions.str_hsv_to_rgb)
|
||||
hue = parse_value_input(node.inputs[0])
|
||||
sat = parse_value_input(node.inputs[1])
|
||||
val = parse_value_input(node.inputs[2])
|
||||
# fac = parse_value_input(node.inputs[3])
|
||||
# col = parse_vector_input(node.inputs[4])
|
||||
return 'hsv_to_rgb(vec3({0}, {1}, {2}))'.format(hue, sat, val)
|
||||
|
||||
elif node.type == 'INVERT':
|
||||
fac = parse_value_input(node.inputs[0])
|
||||
|
@ -943,12 +940,15 @@ def parse_value(node, socket):
|
|||
return '0.0'
|
||||
|
||||
elif node.type == 'OBJECT_INFO':
|
||||
if socket == node.outputs[0]: # Object Index
|
||||
return '0.0'
|
||||
elif socket == node.outputs[1]: # Material Index
|
||||
return '0.0'
|
||||
elif socket == node.outputs[2]: # Random
|
||||
return '0.0'
|
||||
if socket == node.outputs[1]: # Object Index
|
||||
curshader.add_uniform('float objectInfoIndex', link='_objectInfoIndex')
|
||||
return 'objectInfoIndex'
|
||||
elif socket == node.outputs[2]: # Material Index
|
||||
curshader.add_uniform('float objectInfoMaterialIndex', link='_objectInfoMaterialIndex')
|
||||
return 'objectInfoMaterialIndex'
|
||||
elif socket == node.outputs[3]: # Random
|
||||
curshader.add_uniform('float objectInfoRandom', link='_objectInfoRandom')
|
||||
return 'objectInfoRandom'
|
||||
|
||||
elif node.type == 'PARTICLE_INFO':
|
||||
if socket == node.outputs[0]: # Index
|
||||
|
|
|
@ -122,3 +122,24 @@ float tex_noise(const vec2 p) {
|
|||
return tex_noise(vec3(p.x, p.y, 1.0));
|
||||
}
|
||||
"""
|
||||
|
||||
str_hsv_to_rgb = """
|
||||
vec3 hsv_to_rgb(const vec3 c) {
|
||||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||
}
|
||||
"""
|
||||
|
||||
str_rgb_to_hsv = """
|
||||
vec3 rgb_to_hsv(const vec3 c)
|
||||
{
|
||||
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||
|
||||
float d = q.x - min(q.w, q.y);
|
||||
float e = 1.0e-10;
|
||||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||
}
|
||||
"""
|
||||
|
|
|
@ -225,7 +225,6 @@ const float PI = 3.1415926535;
|
|||
const float PI2 = PI * 2.0;
|
||||
const vec2 cameraPlane = vec2(""" + str(round(clip_start * 100) / 100) + """, """ + str(round(clip_end * 100) / 100) + """);
|
||||
const vec2 shadowmapSize = vec2(""" + str(shadowmap_size) + """, """ + str(shadowmap_size) + """);
|
||||
const vec2 shadowmapCubeSize = shadowmapSize / 4.0;
|
||||
""")
|
||||
if wrd.generate_clouds:
|
||||
f.write(
|
||||
|
|
Loading…
Reference in a new issue