deddelaet. это дискорд, отпиши тудаЧото стало нефиг делать и решил слить норм закругление головы в таргетхуде
Вставляем данный код в TargetInfoRenderer.java примерно в 120-127 строке
Пожалуйста, авторизуйтесь для просмотра ссылки.
заместоJava:EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity); mc.getTextureManager().bindTexture(rendererManager.getEntityTexture(entity)); ROUND_HEAD.begin(); ROUND_HEAD.setUniformf("size", headSize + 8, headSize + 8); ROUND_HEAD.setUniformf("radius", 5.1f); ROUND_HEAD.setUniformf("hurt_time", entity.hurtTime); ROUND_HEAD.setUniformf("alpha", 255); ROUND_HEAD.setUniformf("startX", 7.0f); ROUND_HEAD.setUniformf("endX", 14.0f); ROUND_HEAD.setUniformf("startY", 7.0f); ROUND_HEAD.setUniformf("endY", 14.0f); ROUND_HEAD.setUniformf("texXSize", 56.0f); ROUND_HEAD.setUniformf("texYSize", 56.0f); ROUND_HEAD.drawQuads(posX + 6, posY + 6, headSize + 8, headSize + 8); ROUND_HEAD.end();
сам шейдер:Java:drawTargetHead(entity, posX + 6, posY + 6, headSize + 8, headSize + 8);
rounded_head_texture.glsl:#version 120 uniform sampler2D texture; uniform vec2 size; uniform float radius; uniform float hurt_time; uniform float alpha; uniform float startX, endX; uniform float startY, endY; uniform float texXSize; uniform float texYSize; float signedDistanceField(vec2 p, vec2 b, float r) { return length(max(abs(p) - b, 0.0)) - r; } void main() { vec2 tex = gl_TexCoord[0].st; vec2 clippedTexCoord = vec2( mix(startX / texXSize, endX / texXSize, tex.x), mix(startY / texYSize, endY / texYSize, tex.y) ); vec4 smpl = texture2D(texture, clippedTexCoord); vec2 pixel = tex * size; vec2 centre = 0.5 * size; float sa = smoothstep(0.0, 1, signedDistanceField(centre - pixel, centre - radius - 1, radius)); vec4 c = mix(vec4(smpl.rgb, smpl.a), vec4(smpl.rgb, 0), sa); gl_FragColor = vec4(mix(smpl.rgb, vec3(1.0, 0.0, 0.0), hurt_time), c.a * alpha); }
Последнее редактирование: