// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. CCEffect %{ hideInEditor: true techniques: - name: transparent passes: - vert: terrain-brush-vs:vert frag: terrain-brush-fs:frag depthStencilState: depthTest: true depthWrite: false blendState: targets: - blend: true blendSrc: src_alpha blendDst: one_minus_src_alpha blendDstAlpha: one_minus_src_alpha properties: BrushDepthOffset: { value: 0.05 } }% CCProgram terrain-brush-vs %{ precision mediump float; #include #include in vec3 a_position; uniform Constant { float BrushDepthOffset; }; vec4 vert () { vec3 worldPos; worldPos.x = cc_matWorld[3][0] + a_position.x; worldPos.y = cc_matWorld[3][1] + a_position.y; worldPos.z = cc_matWorld[3][2] + a_position.z; worldPos.y += BrushDepthOffset; // depth increment for terrain brushes vec4 pos = vec4(worldPos, 1); pos = cc_matViewProj * pos; return pos; } }% CCProgram terrain-brush-fs %{ precision mediump float; #include vec4 frag () { vec4 color = vec4(0.0, 0.0, 0.0, 0.0); color.rgb = vec3(100, 100, 135) / 255.0; color.a = 0.5; return CCFragOutput(color); } }%