Cycles: Add smoothing option to the Brick Texture
This option allows to create a smoother transition between Bricks and Mortar - 0 applies no smoothing, and 1 smooths across the whole mortar width. Mainly useful for displacement textures. The new default value for the smoothing option is 0.1 to give some smoothing that helps with antialiasing, but existing nodes are loaded with smoothing 0 to preserve compatibility. Reviewers: sergey, dingto, juicyfruit, brecht Reviewed By: brecht Subscribers: Blendify, nutel Differential Revision: https://developer.blender.org/D2230
This commit is contained in:
@@ -1257,6 +1257,7 @@ NODE_DEFINE(BrickTextureNode)
|
||||
SOCKET_IN_COLOR(mortar, "Mortar", make_float3(0.0f, 0.0f, 0.0f));
|
||||
SOCKET_IN_FLOAT(scale, "Scale", 5.0f);
|
||||
SOCKET_IN_FLOAT(mortar_size, "Mortar Size", 0.02f);
|
||||
SOCKET_IN_FLOAT(mortar_smooth, "Mortar Smooth", 0.0f);
|
||||
SOCKET_IN_FLOAT(bias, "Bias", 0.0f);
|
||||
SOCKET_IN_FLOAT(brick_width, "Brick Width", 0.5f);
|
||||
SOCKET_IN_FLOAT(row_height, "Row Height", 0.25f);
|
||||
@@ -1280,6 +1281,7 @@ void BrickTextureNode::compile(SVMCompiler& compiler)
|
||||
ShaderInput *mortar_in = input("Mortar");
|
||||
ShaderInput *scale_in = input("Scale");
|
||||
ShaderInput *mortar_size_in = input("Mortar Size");
|
||||
ShaderInput *mortar_smooth_in = input("Mortar Smooth");
|
||||
ShaderInput *bias_in = input("Bias");
|
||||
ShaderInput *brick_width_in = input("Brick Width");
|
||||
ShaderInput *row_height_in = input("Row Height");
|
||||
@@ -1303,7 +1305,8 @@ void BrickTextureNode::compile(SVMCompiler& compiler)
|
||||
compiler.encode_uchar4(
|
||||
compiler.stack_assign_if_linked(row_height_in),
|
||||
compiler.stack_assign_if_linked(color_out),
|
||||
compiler.stack_assign_if_linked(fac_out)));
|
||||
compiler.stack_assign_if_linked(fac_out),
|
||||
compiler.stack_assign_if_linked(mortar_smooth_in)));
|
||||
|
||||
compiler.add_node(compiler.encode_uchar4(offset_frequency, squash_frequency),
|
||||
__float_as_int(scale),
|
||||
@@ -1315,6 +1318,11 @@ void BrickTextureNode::compile(SVMCompiler& compiler)
|
||||
__float_as_int(offset),
|
||||
__float_as_int(squash));
|
||||
|
||||
compiler.add_node(__float_as_int(mortar_smooth),
|
||||
SVM_STACK_INVALID,
|
||||
SVM_STACK_INVALID,
|
||||
SVM_STACK_INVALID);
|
||||
|
||||
tex_mapping.compile_end(compiler, vector_in, vector_offset);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user