Update log interface
This commit is contained in:
@@ -606,16 +606,27 @@ class Material {
|
||||
}
|
||||
|
||||
else if (node.type == 'BLUR') {
|
||||
// Image nodes only for now
|
||||
var out_col = parse_vector_input(node.inputs[0]);
|
||||
out_col = parsedMap.get(out_col);
|
||||
if (out_col == null) return 'vec3(0.0, 0.0, 0.0)';
|
||||
out_col = textureMap.get(out_col.split(".")[0]);
|
||||
if (out_col == null) return 'vec3(0.0, 0.0, 0.0)';
|
||||
out_col += '.rgb';
|
||||
var strength = parse_value_input(node.inputs[1]);
|
||||
curshader.write('vec3 res1 = vec3(0, 0, 0);');
|
||||
curshader.write('for (int i = -6; i <= 6; ++i) {');
|
||||
curshader.write('for (int j = -6; j <= 6; ++j) {');
|
||||
curshader.write('texCoord += vec2(i, j) / 100;');
|
||||
if (strength == '0.0') return 'vec3(0.0, 0.0, 0.0)';
|
||||
var steps = 'int($strength * 10 + 1)';
|
||||
var texture = out_col.substring(out_col.indexOf("(") + 1, out_col.indexOf(","));
|
||||
curshader.write('vec2 _texCoord = texCoord;');
|
||||
curshader.write('vec3 res1 = vec3(0.0, 0.0, 0.0);');
|
||||
curshader.write('for (int i = -$steps; i <= $steps; ++i) {');
|
||||
curshader.write('for (int j = -$steps; j <= $steps; ++j) {');
|
||||
curshader.write('texCoord = _texCoord + vec2(i, j) / textureSize($texture, 0);');
|
||||
curshader.write('res1 += $out_col;');
|
||||
curshader.write('}');
|
||||
curshader.write('}');
|
||||
curshader.write('res1 /= 13 * 13;');
|
||||
curshader.write('texCoord = _texCoord;');
|
||||
curshader.write('res1 /= ($steps * 2 + 1) * ($steps * 2 + 1);');
|
||||
return 'res1';
|
||||
}
|
||||
|
||||
@@ -1673,6 +1684,9 @@ class Material {
|
||||
return node_name(node) + '_' + safesrc(socket.name) + '_res';
|
||||
}
|
||||
|
||||
static var parsedMap = new Map<String, String>();
|
||||
static var textureMap = new Map<String, String>();
|
||||
|
||||
static function write_result(l:TNodeLink):String {
|
||||
var from_node = getNode(l.from_id);
|
||||
var from_socket = from_node.outputs[l.from_socket];
|
||||
@@ -1684,12 +1698,14 @@ class Material {
|
||||
var res = parse_vector(from_node, from_socket);
|
||||
if (res == null)
|
||||
return null;
|
||||
parsedMap.set(res_var, res);
|
||||
curshader.write('vec3 $res_var = $res;');
|
||||
}
|
||||
else if (st == 'VALUE') {
|
||||
var res = parse_value(from_node, from_socket);
|
||||
if (res == null)
|
||||
return null;
|
||||
parsedMap.set(res_var, res);
|
||||
curshader.write('float $res_var = $res;');
|
||||
}
|
||||
}
|
||||
@@ -1720,6 +1736,7 @@ class Material {
|
||||
curshader.write('if (texCoordBlend.z > 0) $tex_store += texture($tex_name, ${uv_name}2.xy) * texCoordBlend.z;');
|
||||
}
|
||||
else {
|
||||
textureMap.set(tex_store, 'texture($tex_name, $uv_name.xy)');
|
||||
curshader.write('vec4 $tex_store = texture($tex_name, $uv_name.xy);');
|
||||
}
|
||||
|
||||
|
||||
@@ -300,6 +300,8 @@ class MaterialShader {
|
||||
s += '#define textureLod(tex, coord, lod) tex.SampleLevel(tex ## _sampler, coord, lod)\n';
|
||||
s += '#define textureLodShared(tex, coord, lod) tex.SampleLevel($sharedSampler, coord, lod)\n';
|
||||
s += '#define texelFetch(tex, coord, lod) tex.Load(float3(coord.xy, lod))\n';
|
||||
s += 'uint2 _GetDimensions(Texture2D tex, uint lod) { uint x, y; tex.GetDimensions(x, y); return uint2(x, y); }\n';
|
||||
s += '#define textureSize _GetDimensions\n';
|
||||
s += '#define mod(a, b) (a % b)\n';
|
||||
s += '#define vec2 float2\n';
|
||||
s += '#define vec3 float3\n';
|
||||
|
||||
@@ -1198,7 +1198,7 @@ class NodesMaterial {
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
name: "Blur",
|
||||
name: "Blur (Image)",
|
||||
type: "BLUR", // extension
|
||||
x: 0,
|
||||
y: 0,
|
||||
|
||||
Reference in New Issue
Block a user