I’m new to shaders, and I’ve been working on a shader for a while now that outlines the blocks in a texture, and then having that outline emit a glow kind of like neon. It currently works exactly how i want it to, but it’s become rather slow so i was wondering if anyone could help me with the math to do this.
here is the code:
float testInt1 = distance(IN.worldPos, _P1Loc.xyz);
float testInt2 = distance(IN.worldPos, _P2Loc.xyz);
float testInt3 = distance(IN.worldPos, _P3Loc.xyz);
float testInt4 = distance(IN.worldPos, _P4Loc.xyz);
half yTex = _MainTex_TexelSize.y;
half xTex = _MainTex_TexelSize.x;
half IN0X = IN.uv_MainTex.x;
half INX = IN.uv_MainTex.x + xTex;
half IN2X = IN.uv_MainTex.x + xTex + xTex;
half IN3X = IN.uv_MainTex.x + xTex + xTex + xTex;
half IN4X = IN.uv_MainTex.x + xTex + xTex + xTex + xTex;
half IN5X = IN.uv_MainTex.x + xTex + xTex + xTex + xTex + xTex;
half IN6X = IN.uv_MainTex.x + xTex + xTex + xTex + xTex + xTex + xTex;
half INrX = IN.uv_MainTex.x - xTex;
half INr2X = IN.uv_MainTex.x - xTex - xTex;
half INr3X = IN.uv_MainTex.x - xTex - xTex - xTex;
half INr4X = IN.uv_MainTex.x - xTex - xTex - xTex - xTex;
half INr5X = IN.uv_MainTex.x - xTex - xTex - xTex - xTex - xTex;
half INr6X = IN.uv_MainTex.x - xTex - xTex - xTex - xTex - xTex - xTex;
half IN0Y = IN.uv_MainTex.y;
half INY = IN.uv_MainTex.y + yTex;
half IN2Y = IN.uv_MainTex.y + yTex + yTex;
half IN3Y = IN.uv_MainTex.y + yTex + yTex + yTex;
half IN4Y = IN.uv_MainTex.y + yTex + yTex + yTex + yTex;
half IN5Y = IN.uv_MainTex.y + yTex + yTex + yTex + yTex + yTex;
half IN6Y = IN.uv_MainTex.y + yTex + yTex + yTex + yTex + yTex + yTex;
half INrY = IN.uv_MainTex.y - yTex;
half INr2Y = IN.uv_MainTex.y - yTex - yTex;
half INr3Y = IN.uv_MainTex.y - yTex - yTex - yTex;
half INr4Y = IN.uv_MainTex.y - yTex - yTex - yTex - yTex;
half INr5Y = IN.uv_MainTex.y - yTex - yTex - yTex - yTex - yTex;
half INr6Y = IN.uv_MainTex.y - yTex - yTex - yTex - yTex - yTex - yTex;
fixed OutLine1 = tex2D(_P1Tex, IN.uv_MainTex).a
* (((tex2D(_P1Tex, fixed2(IN0X, INY)).a * tex2D(_P1Tex, fixed2(IN0X, INrY)).a
* tex2D(_P1Tex, fixed2(INrX, IN0Y)).a * tex2D(_P1Tex, fixed2(INX, IN0Y)).a
* tex2D(_P1Tex, fixed2(INrX, INrY)).a * tex2D(_P1Tex, fixed2(INrX, INY)).a
* tex2D(_P1Tex, fixed2(INX, INY)).a * tex2D(_P1Tex, fixed2(INX, INrY)).a
* tex2D(_P1Tex, fixed2(IN0X, INr2Y)).a * tex2D(_P1Tex, fixed2(IN0X, IN2Y)).a
* tex2D(_P1Tex, fixed2(INr2X, IN0Y)).a * tex2D(_P1Tex, fixed2(IN2X, IN0Y)).a) * -1) + 1);
fixed inGlow1 = (tex2D(_P1Tex, IN.uv_MainTex).a * (((((tex2D(_P1Tex, fixed2(IN6X, IN0Y)).a * tex2D(_P1Tex, fixed2(IN3X, IN0Y)).a * tex2D(_P1Tex, fixed2(IN4X, IN0Y)).a * tex2D(_P1Tex, fixed2(IN5X, IN0Y)).a) * -1) + 1) * (6 - tex2D(_P1Tex, fixed2(IN5X, IN0Y)).a - tex2D(_P1Tex, fixed2(IN4X, IN0Y)).a - tex2D(_P1Tex, fixed2(IN3X, IN0Y)).a - tex2D(_P1Tex, fixed2(IN2X, IN0Y)).a - tex2D(_P1Tex, fixed2(INX, IN0Y)).a)) +
((((tex2D(_P1Tex, fixed2(INr6X, IN0Y)).a * tex2D(_P1Tex, fixed2(INr3X, IN0Y)).a * tex2D(_P1Tex, fixed2(INr4X, IN0Y)).a * tex2D(_P1Tex, fixed2(INr5X, IN0Y)).a) * -1) + 1) * (6 - tex2D(_P1Tex, fixed2(INr5X, IN0Y)).a - tex2D(_P1Tex, fixed2(INr4X, IN0Y)).a - tex2D(_P1Tex, fixed2(INr3X, IN0Y)).a - tex2D(_P1Tex, fixed2(INr2X, IN0Y)).a - tex2D(_P1Tex, fixed2(INrX, IN0Y)).a)) +
((((tex2D(_P1Tex, fixed2(IN0X, IN6Y)).a * tex2D(_P1Tex, fixed2(IN0X, IN3Y)).a * tex2D(_P1Tex, fixed2(IN0X, IN4Y)).a * tex2D(_P1Tex, fixed2(IN0X, IN5Y)).a) * -1) + 1) * (6 - tex2D(_P1Tex, fixed2(IN0X, IN5Y)).a - tex2D(_P1Tex, fixed2(IN0X, IN4Y)).a - tex2D(_P1Tex, fixed2(IN0X, IN3Y)).a - tex2D(_P1Tex, fixed2(IN0X, IN2Y)).a - tex2D(_P1Tex, fixed2(IN0X, INY)).a)) +
((((tex2D(_P1Tex, fixed2(IN4X, IN4Y)).a * tex2D(_P1Tex, fixed2(IN3X, IN3Y)).a * tex2D(_P1Tex, fixed2(IN2X, IN2Y)).a) * -1) + 1) * (4 - tex2D(_P1Tex, fixed2(IN4X, IN4Y)).a - tex2D(_P1Tex, fixed2(IN3X, IN3Y)).a - tex2D(_P1Tex, fixed2(IN2X, IN2Y)).a - tex2D(_P1Tex, fixed2(INX, INY)).a)) +
((((tex2D(_P1Tex, fixed2(INr4X, IN4Y)).a * tex2D(_P1Tex, fixed2(INr3X, IN3Y)).a * tex2D(_P1Tex, fixed2(INr2X, IN2Y)).a) * -1) + 1) * (4 - tex2D(_P1Tex, fixed2(INr4X, IN4Y)).a - tex2D(_P1Tex, fixed2(INr3X, IN3Y)).a - tex2D(_P1Tex, fixed2(INr2X, IN2Y)).a - tex2D(_P1Tex, fixed2(INrX, INY)).a)) +
((((tex2D(_P1Tex, fixed2(IN4X, INr4Y)).a * tex2D(_P1Tex, fixed2(IN3X, INr3Y)).a * tex2D(_P1Tex, fixed2(IN2X, INr2Y)).a) * -1) + 1) * (4 - tex2D(_P1Tex, fixed2(IN4X, INr4Y)).a - tex2D(_P1Tex, fixed2(IN3X, INr3Y)).a - tex2D(_P1Tex, fixed2(IN2X, INr2Y)).a - tex2D(_P1Tex, fixed2(INX, INrY)).a)) +
((((tex2D(_P1Tex, fixed2(INr4X, INr4Y)).a * tex2D(_P1Tex, fixed2(INr3X, INr3Y)).a * tex2D(_P1Tex, fixed2(INr2X, INr2Y)).a) * -1) + 1) * (4 - tex2D(_P1Tex, fixed2(INr4X, INr4Y)).a - tex2D(_P1Tex, fixed2(INr3X, INr3Y)).a - tex2D(_P1Tex, fixed2(INr2X, INr2Y)).a - tex2D(_P1Tex, fixed2(INrX, INrY)).a)) +
((((tex2D(_P1Tex, fixed2(IN0X, INr6Y)).a * tex2D(_P1Tex, fixed2(IN0X, INr3Y)).a * tex2D(_P1Tex, fixed2(IN0X, INr4Y)).a * tex2D(_P1Tex, fixed2(IN0X, INr5Y)).a) * -1) + 1) * (6 - tex2D(_P1Tex, fixed2(IN0X, INr5Y)).a - tex2D(_P1Tex, fixed2(IN0X, INr4Y)).a - tex2D(_P1Tex, fixed2(IN0X, INr3Y)).a - tex2D(_P1Tex, fixed2(IN0X, INr2Y)).a - tex2D(_P1Tex, fixed2(IN0X, INrY)).a))) / 28) * ((OutLine1 * -1) + 1);
fixed outGlow1 = ((tex2D(_P1Tex, IN.uv_MainTex).a * -1) + 1) * (tex2D(_P1Tex, fixed2(IN0X, INY)).a + tex2D(_P1Tex, fixed2(IN0X, IN2Y)).a + tex2D(_P1Tex, fixed2(IN0X, IN3Y)).a + tex2D(_P1Tex, fixed2(IN0X, IN4Y)).a +
tex2D(_P1Tex, fixed2(IN0X, INrY)).a + tex2D(_P1Tex, fixed2(IN0X, INr2Y)).a + tex2D(_P1Tex, fixed2(IN0X, INr3Y)).a + tex2D(_P1Tex, fixed2(IN0X, INr4Y)).a +
tex2D(_P1Tex, fixed2(INX, IN0Y)).a + tex2D(_P1Tex, fixed2(IN2X, IN0Y)).a + tex2D(_P1Tex, fixed2(IN3X, IN0Y)).a + tex2D(_P1Tex, fixed2(IN4X, IN0Y)).a +
tex2D(_P1Tex, fixed2(INrX, IN0Y)).a + tex2D(_P1Tex, fixed2(INr2X, IN0Y)).a + tex2D(_P1Tex, fixed2(INr3X, IN0Y)).a + tex2D(_P1Tex, fixed2(INr4X, IN0Y)).a +
tex2D(_P1Tex, fixed2(INX, INY)).a + tex2D(_P1Tex, fixed2(IN2X, IN2Y)).a + tex2D(_P1Tex, fixed2(IN3X, IN3Y)).a + tex2D(_P1Tex, fixed2(INr3X, IN3Y)).a + tex2D(_P1Tex, fixed2(INr2X, IN2Y)).a + tex2D(_P1Tex, fixed2(INrX, INY)).a +
tex2D(_P1Tex, fixed2(INX, INrY)).a + tex2D(_P1Tex, fixed2(IN2X, INr2Y)).a + tex2D(_P1Tex, fixed2(IN3X, INr3Y)).a + tex2D(_P1Tex, fixed2(INr3X, INr3Y)).a + tex2D(_P1Tex, fixed2(INr2X, INr2Y)).a + tex2D(_P1Tex, fixed2(INrX, INrY)).a) / 28;
fixed4 swapCol1 = fixed4(0.1, 1, 0.1, OutLine1 + inGlow1 + outGlow1);
this thread is no longer needed i figured it out. I am more or less moving this into the script.