Merge branch 'master' into dev-aprilfools
@ -24,7 +24,7 @@ scoop install material-maker
|
|||||||
|
|
||||||
## Screenshot
|
## Screenshot
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ Base class for texture generators, that defines their API
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
signal parameter_changed
|
signal parameter_changed
|
||||||
|
signal output_changed(index)
|
||||||
|
|
||||||
class InputPort:
|
class InputPort:
|
||||||
var generator : MMGenBase = null
|
var generator : MMGenBase = null
|
||||||
@ -49,6 +50,9 @@ func can_be_deleted() -> bool:
|
|||||||
func toggle_editable() -> bool:
|
func toggle_editable() -> bool:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
func is_template() -> bool:
|
||||||
|
return model != null
|
||||||
|
|
||||||
func is_editable() -> bool:
|
func is_editable() -> bool:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
@ -117,6 +121,7 @@ func notify_output_change(output_index : int) -> void:
|
|||||||
var targets = get_targets(output_index)
|
var targets = get_targets(output_index)
|
||||||
for target in targets:
|
for target in targets:
|
||||||
target.generator.source_changed(target.input_index)
|
target.generator.source_changed(target.input_index)
|
||||||
|
emit_signal("output_changed", output_index)
|
||||||
|
|
||||||
func source_changed(__) -> void:
|
func source_changed(__) -> void:
|
||||||
emit_signal("parameter_changed", "__input_changed__", 0)
|
emit_signal("parameter_changed", "__input_changed__", 0)
|
||||||
|
@ -10,7 +10,13 @@ var editable : bool = false
|
|||||||
var transmits_seed : bool = true
|
var transmits_seed : bool = true
|
||||||
|
|
||||||
signal connections_changed(removed_connections, added_connections)
|
signal connections_changed(removed_connections, added_connections)
|
||||||
|
signal hierarchy_changed
|
||||||
|
|
||||||
|
func emit_hierarchy_changed():
|
||||||
|
var top = self
|
||||||
|
while top.get_parent() != null and top.get_parent().get_script() == get_script():
|
||||||
|
top = top.get_parent()
|
||||||
|
top.emit_signal("hierarchy_changed")
|
||||||
|
|
||||||
func fix_remotes() -> void:
|
func fix_remotes() -> void:
|
||||||
for c in get_children():
|
for c in get_children():
|
||||||
@ -111,6 +117,8 @@ func add_generator(generator : MMGenBase) -> bool:
|
|||||||
name = generator.name + "_" + str(index)
|
name = generator.name + "_" + str(index)
|
||||||
generator.name = name
|
generator.name = name
|
||||||
add_child(generator)
|
add_child(generator)
|
||||||
|
if generator.get_script() == get_script():
|
||||||
|
emit_hierarchy_changed()
|
||||||
return true
|
return true
|
||||||
|
|
||||||
func remove_generator(generator : MMGenBase) -> bool:
|
func remove_generator(generator : MMGenBase) -> bool:
|
||||||
@ -123,6 +131,8 @@ func remove_generator(generator : MMGenBase) -> bool:
|
|||||||
connections = new_connections
|
connections = new_connections
|
||||||
remove_child(generator)
|
remove_child(generator)
|
||||||
fix_remotes()
|
fix_remotes()
|
||||||
|
if generator.get_script() == get_script():
|
||||||
|
emit_hierarchy_changed()
|
||||||
generator.queue_free()
|
generator.queue_free()
|
||||||
return true
|
return true
|
||||||
|
|
||||||
@ -130,8 +140,10 @@ func replace_generator(old : MMGenBase, new : MMGenBase) -> void:
|
|||||||
new.name = old.name
|
new.name = old.name
|
||||||
new.position = old.position
|
new.position = old.position
|
||||||
remove_child(old)
|
remove_child(old)
|
||||||
old.free()
|
|
||||||
add_child(new)
|
add_child(new)
|
||||||
|
if old.get_script() == get_script() or new.get_script() == get_script():
|
||||||
|
emit_hierarchy_changed()
|
||||||
|
old.free()
|
||||||
|
|
||||||
func get_connected_inputs(generator) -> Array:
|
func get_connected_inputs(generator) -> Array:
|
||||||
var rv : Array = []
|
var rv : Array = []
|
||||||
@ -316,6 +328,7 @@ func create_subgraph(gens : Array) -> MMGenGraph:
|
|||||||
new_graph.add_child(gen_parameters)
|
new_graph.add_child(gen_parameters)
|
||||||
fix_remotes()
|
fix_remotes()
|
||||||
new_graph.fix_remotes()
|
new_graph.fix_remotes()
|
||||||
|
emit_hierarchy_changed()
|
||||||
return new_graph
|
return new_graph
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ func create_gen(data) -> MMGenBase:
|
|||||||
if generator == null and data.has("type"):
|
if generator == null and data.has("type"):
|
||||||
if types.has(data.type):
|
if types.has(data.type):
|
||||||
generator = types[data.type].new()
|
generator = types[data.type].new()
|
||||||
else:
|
elif predefined_generators.has(data.type):
|
||||||
generator = create_gen(predefined_generators[data.type])
|
generator = create_gen(predefined_generators[data.type])
|
||||||
if generator == null:
|
if generator == null:
|
||||||
print("Cannot find description for "+data.type)
|
print("Cannot find description for "+data.type)
|
||||||
|
@ -9,7 +9,7 @@ vec3 calcColor(vec4 uv) {
|
|||||||
|
|
||||||
float raymarch(vec3 ro, vec3 rd) {
|
float raymarch(vec3 ro, vec3 rd) {
|
||||||
float d=0.0;
|
float d=0.0;
|
||||||
for (int i = 0; i < 50; i++) {
|
for (int i = 0; i < 200; i++) {
|
||||||
vec3 p = ro + rd*d;
|
vec3 p = ro + rd*d;
|
||||||
float dstep = calcdist(p);
|
float dstep = calcdist(p);
|
||||||
d += dstep;
|
d += dstep;
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "splatter_base",
|
|
||||||
"node_position": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"parameters": {
|
|
||||||
"name": 0.5,
|
|
||||||
"offx": 0,
|
|
||||||
"offy": 0,
|
|
||||||
"repeat": 8,
|
|
||||||
"scale": 1.64,
|
|
||||||
"size": 1
|
|
||||||
},
|
|
||||||
"shader_model": {
|
|
||||||
"code": "vec4 $(name_uv)_xyzw = splatter($uv, $repeat, $scale, vec2($offx, $offy));",
|
|
||||||
"global": "vec4 splatter(vec2 uv, float repeat, float scale, vec2 offset) {\n\tvec2 center = (floor(uv*repeat-offset)+0.5+offset)/repeat;\n\tvec2 tmp = (uv-center)*repeat*2.0;\n\tvec2 src_uv;\n\tsrc_uv.x = tmp.x*cos(center.x)+tmp.y*sin(center.x);\n\tsrc_uv.y = tmp.x*sin(center.x)-tmp.y*cos(center.x);\n\tsrc_uv /= scale;\n\tsrc_uv += 0.5;\n\treturn vec4(src_uv, center);\n}",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"default": "0.0",
|
|
||||||
"label": "",
|
|
||||||
"name": "in",
|
|
||||||
"type": "f"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"default": "1.0",
|
|
||||||
"label": "",
|
|
||||||
"name": "mask",
|
|
||||||
"type": "f"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"instance": "",
|
|
||||||
"name": "Splatter",
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"f": "$in($(name_uv)_xyzw.xy)*$mask($(name_uv)_xyzw.zw)",
|
|
||||||
"type": "f"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"default": 4,
|
|
||||||
"label": "Repeat",
|
|
||||||
"max": 128,
|
|
||||||
"min": 2,
|
|
||||||
"name": "repeat",
|
|
||||||
"step": 1,
|
|
||||||
"type": "float"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"default": 1,
|
|
||||||
"label": "Scale",
|
|
||||||
"max": 2,
|
|
||||||
"min": 0,
|
|
||||||
"name": "scale",
|
|
||||||
"step": 0.01,
|
|
||||||
"type": "float"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"default": 0.5,
|
|
||||||
"label": "Offset X",
|
|
||||||
"max": 1,
|
|
||||||
"min": 0,
|
|
||||||
"name": "offx",
|
|
||||||
"step": 0.1,
|
|
||||||
"type": "float"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"default": 0.5,
|
|
||||||
"label": "Offset Y",
|
|
||||||
"max": 1,
|
|
||||||
"min": 0,
|
|
||||||
"name": "offy",
|
|
||||||
"step": 0.1,
|
|
||||||
"type": "float"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "shader"
|
|
||||||
}
|
|
127
addons/material_maker/nodes/tiler.mmg
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
"name": "tiler",
|
||||||
|
"node_position": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"parameters": {
|
||||||
|
"offset": 0,
|
||||||
|
"overlap": 2,
|
||||||
|
"rotate": 0,
|
||||||
|
"scale": 0,
|
||||||
|
"select_inputs": 0,
|
||||||
|
"tx": 4,
|
||||||
|
"ty": 4
|
||||||
|
},
|
||||||
|
"shader_model": {
|
||||||
|
"code": "",
|
||||||
|
"global": "",
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"default": "0.0",
|
||||||
|
"function": true,
|
||||||
|
"label": "",
|
||||||
|
"name": "in",
|
||||||
|
"type": "f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "1.0",
|
||||||
|
"function": true,
|
||||||
|
"label": "",
|
||||||
|
"name": "mask",
|
||||||
|
"type": "f"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instance": "float tiler_$(name)(vec2 uv, vec2 tile, int overlap, vec2 _seed) {\n\tfloat c = 0.0;\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5));\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\tpos = fract(pos+$offset*seed/tile);\n\t\t\tfloat mask = $mask(pos+vec2(0.5));\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * $rotate;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\t$select_inputs\n\t\t\t\tc = max(c, $in(pv)*mask);\n\t\t\t}\n\t\t}\n\t}\n\treturn c;\n}",
|
||||||
|
"name": "Tiler",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"f": "tiler_$(name)($uv, vec2($tx, $ty), int($overlap), vec2($seed))",
|
||||||
|
"type": "f"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 4,
|
||||||
|
"label": "Tile X",
|
||||||
|
"max": 64,
|
||||||
|
"min": 1,
|
||||||
|
"name": "tx",
|
||||||
|
"step": 1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 4,
|
||||||
|
"label": "Tile Y",
|
||||||
|
"max": 64,
|
||||||
|
"min": 1,
|
||||||
|
"name": "ty",
|
||||||
|
"step": 1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 1,
|
||||||
|
"label": "Overlap",
|
||||||
|
"max": 5,
|
||||||
|
"min": 0,
|
||||||
|
"name": "overlap",
|
||||||
|
"step": 1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": 0,
|
||||||
|
"label": "Inputs",
|
||||||
|
"name": "select_inputs",
|
||||||
|
"type": "enum",
|
||||||
|
"values": [
|
||||||
|
{
|
||||||
|
"name": "1",
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "4",
|
||||||
|
"value": "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "16",
|
||||||
|
"value": "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 0.5,
|
||||||
|
"label": "Offset",
|
||||||
|
"max": 1,
|
||||||
|
"min": 0,
|
||||||
|
"name": "offset",
|
||||||
|
"step": 0.01,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 0,
|
||||||
|
"label": "Rotate",
|
||||||
|
"max": 180,
|
||||||
|
"min": 0,
|
||||||
|
"name": "rotate",
|
||||||
|
"step": 0.1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 0,
|
||||||
|
"label": "Scale",
|
||||||
|
"max": 1,
|
||||||
|
"min": 0,
|
||||||
|
"name": "scale",
|
||||||
|
"step": 0.01,
|
||||||
|
"type": "float"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "shader"
|
||||||
|
}
|
127
addons/material_maker/nodes/tiler_color.mmg
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
"name": "tiler_color",
|
||||||
|
"node_position": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"parameters": {
|
||||||
|
"offset": 0,
|
||||||
|
"overlap": 2,
|
||||||
|
"rotate": 0,
|
||||||
|
"scale": 0,
|
||||||
|
"select_inputs": 0,
|
||||||
|
"tx": 4,
|
||||||
|
"ty": 4
|
||||||
|
},
|
||||||
|
"shader_model": {
|
||||||
|
"code": "",
|
||||||
|
"global": "",
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"default": "vec4(0.0)",
|
||||||
|
"function": true,
|
||||||
|
"label": "",
|
||||||
|
"name": "in",
|
||||||
|
"type": "rgba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "1.0",
|
||||||
|
"function": true,
|
||||||
|
"label": "",
|
||||||
|
"name": "mask",
|
||||||
|
"type": "f"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instance": "vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, vec2 _seed) {\n\tvec4 c = vec4(0.0);\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5));\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\tpos = fract(pos+$offset*seed/tile);\n\t\t\tfloat mask = $mask(pos+vec2(0.5));\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * $rotate;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\t$select_inputs\n\t\t\t\tvec4 n = $in(pv);\n\t\t\t\tfloat na = n.a*mask;\n\t\t\t\tfloat a = (1.0-c.a)*(1.0*na);\n\t\t\t\tc = mix(c, n, na);\n\t\t\t}\n\t\t}\n\t}\n\treturn c;\n}",
|
||||||
|
"name": "Color Tiler",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"rgba": "tiler_$(name)($uv, vec2($tx, $ty), int($overlap), vec2($seed))",
|
||||||
|
"type": "rgba"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 4,
|
||||||
|
"label": "Tile X",
|
||||||
|
"max": 64,
|
||||||
|
"min": 1,
|
||||||
|
"name": "tx",
|
||||||
|
"step": 1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 4,
|
||||||
|
"label": "Tile Y",
|
||||||
|
"max": 64,
|
||||||
|
"min": 1,
|
||||||
|
"name": "ty",
|
||||||
|
"step": 1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 1,
|
||||||
|
"label": "Overlap",
|
||||||
|
"max": 5,
|
||||||
|
"min": 0,
|
||||||
|
"name": "overlap",
|
||||||
|
"step": 1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": 0,
|
||||||
|
"label": "Inputs",
|
||||||
|
"name": "select_inputs",
|
||||||
|
"type": "enum",
|
||||||
|
"values": [
|
||||||
|
{
|
||||||
|
"name": "1",
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "4",
|
||||||
|
"value": "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "16",
|
||||||
|
"value": "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 0.5,
|
||||||
|
"label": "Offset",
|
||||||
|
"max": 1,
|
||||||
|
"min": 0,
|
||||||
|
"name": "offset",
|
||||||
|
"step": 0.01,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 0,
|
||||||
|
"label": "Rotate",
|
||||||
|
"max": 180,
|
||||||
|
"min": 0,
|
||||||
|
"name": "rotate",
|
||||||
|
"step": 0.1,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control": "None",
|
||||||
|
"default": 0,
|
||||||
|
"label": "Scale",
|
||||||
|
"max": 1,
|
||||||
|
"min": 0,
|
||||||
|
"name": "scale",
|
||||||
|
"step": 0.01,
|
||||||
|
"type": "float"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "shader"
|
||||||
|
}
|
BIN
material_maker/doc/images/create_node_menu.gif
Normal file
After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.6 KiB |