So, I was looking through the Unity GUI system and noticed there’s a pixel border you can set of the image that isn’t scaled with the content inside it. Is there any way to do this with textures on say a scaled cube? I have found outline shaders but they only display the furthest edges, which in my case will be mostly hidden.

Came up with this, it gets the job done on cubes well enough

   using UnityEngine;
    using System.Collections;
    
    public class addTextureBorderByScale : MonoBehaviour {
    	public Texture2D t;
    	public int x;
    	public int y;
    	public bool useTransformScale = true;
    	public enum scaleTypes {XY,XZ,YZ};
    	public scaleTypes scaleAxis = scaleTypes.XZ;
    	public int scaleMod = 2;
    	// Use this for initialization
    	void Start () {
    	if(useTransformScale) { 
    			switch(scaleAxis) {
    			default:
    			case scaleTypes.XY:
    				x = (int)transform.localScale.x;
    				y = (int)transform.localScale.y;
    				break;
    
    			case scaleTypes.XZ:
    				x = (int)transform.localScale.x;
    				y = (int)transform.localScale.z;
    				break;
    
    			case scaleTypes.YZ:
    				x = (int)transform.localScale.y;
    				y = (int)transform.localScale.z;
    				break;
    
    			}
    		}
    
    		x = x*scaleMod;
    		y = y*scaleMod;
    
    		t = new Texture2D(x,y);
    		t.filterMode = FilterMode.Point;
    
    		for(int i = 0; i < y; i++) {
    			t.SetPixel(0,i,Color.clear);
    			t.SetPixel(x-1,i,Color.clear);
    		}
    		
    
    		for(int i = 0; i < x; i++) {
    			t.SetPixel(i,0,Color.clear);
    			t.SetPixel(i,y-1,Color.clear);
    		}
    
    		t.Apply();
    		//TextureScale.Point(t,1000,1000);
    		GetComponent<Renderer>().material.EnableKeyword("_EMISSION");
    		GetComponent<Renderer>().material.SetTexture("_EmissionMap",t);
    	}
    	
    	// Update is called once per frame
    	void Update () {
    	
    	}
    }