From a2a9dcf292781c6cf2e07b08bc1ff8f18f4f7d20 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Mon, 12 Aug 2024 22:32:38 +0200 Subject: [PATCH] quine golf: optimise font further, 65x65 grid, 4208B --- Assets/test/quine_golf.shader | 12 ++++++------ text_shader/6x6.png | Bin 8344 -> 8268 bytes text_shader/out_golfed.h | 8 ++++---- text_shader/src/main.rs | 1 + 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Assets/test/quine_golf.shader b/Assets/test/quine_golf.shader index b7c5bd6..6395cca 100644 --- a/Assets/test/quine_golf.shader +++ b/Assets/test/quine_golf.shader @@ -3,14 +3,14 @@ Shader"S"{SubShader{Pass{CGPROGRAM#pragma vertex a #include"UnityCG.cginc" #define g const uint struct A{float4 v:POSITION;float2 u:TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct V{float2 u:TEXCOORD0;float4 v:SV_POSITION;UNITY_VERTEX_OUTPUT_STEREO};V a(A v){V o;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_OUTPUT(V,o);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);o.v=UnityObjectToClipPos(v.v);o.u=v.u;return o;}float3 f(V U):SV_Target{ -g t[]={0x2f00576f,0x33f2c1f7,0x2f1fb204,0x1b49dda7,0x3d618237,0x42c83a2e,0x4541a121,0x53a72e14,0x1adea1c5,0x5d3cd90b,0x603c289b,0x568d5310,0x339e664f,0x62d0e527,0x51d53c3a,0x3b06de0b,0x62ec13db,0x45bce019,0x620fc251,0x22a4ccf8,0x24a26b0d,0x718915e0,0x3bdc4407,0x40a4f48d,0x5cc90e40,0x67f27ee5,0x0125aeee,0x2fded81e,0x7ba20d4e,0x1c042b18,0x7442f4ab,0x4a2b45e1,0x7dd7e131,0x8802215d,0x793c7eb0,0x7ad99288,0x76b88a6f,0x7aea15b0,0x85a02346,0x3401d0e0,0x8bde4d4e,0x1c042b18,0x7442f4ab,0x4a2b45e1,0x7d04286b,0x5ced1bbf,0x3025cfee,0x2fded81e,0x7ba4b2d0,0x79543a04,0x4850f4c8,0x4a92c0fb,0x79586a84,0x48664053,0x8b2a258f,0x0126f369,0x016c68a2,0x76b44093,0x80770b08,0x76b88a6f,0x7aea15b0,0x85a69ff3,0x6a865f87,0x8a33f131,0x7628343e,0x80ac7ba1,0x3e5dcba9,0x2d5f4c1b,0x7b8dda68,0x76bb5f80,0x4d905394,0x8a7a6d41,0x8097918b,0x78689288,0x2fe6ed44,0x4b0f80f3,0x71b140db,0x62ec13de,0x1f417b36,0x790b1049,0x53c9d65b,0x5bb83ff3,0x71affbd5,0x6e9d819f,0x5d839980,0x71e21f2a,0x70a7a740,0x28e2812b,0x93ed1d08,0x77f907ff,0x5d7d89f0,0x5ec855c7,0x8f2c49f0,0x1f38af31,0x7db71b1d,0xa0bace31,0x2c023743,0x0c83e9a2,0x0c553be2,0x0eaf9487,0x02b7b638,0x2c312f59,0x0eecb9aa,0x13afda83,0x02fdd3e8,0x115e324a,0x2c291542,0x115e04a2,0x0ef51b9a,0x0c6d7487,0x0c4506d3,0x2c295f51,0x18a164a7,0x0edd91f4,0x1685d259,0x163f6b92,0x0530ea38,0x02fe8337,0x0ec63a62,0x114dc9a8,0x13b0d2a4,0x05217d28,0x02fe0452,0x0782ada2,0x09ecd2a5,0x13989af4,0x18f6d259,0x163f6c32,0x05310383,0x02fdd259,0x0501be91,0x2c195d33,0x18b06ea4,0x02988e41,0x2c313093,0x0509aba7,0x09e35b34,0x02fdd3e3,0x0a0b1853,0x2c021f83,0x113e8f42,0x13bf2df5,0x02c0e2a6,0x07827659,0x11a450ea,0x111f9952,0x05291943,0x0ef489a2,0x051112f9,0x04eb9344,0x04fa2184,0x2c01ee23,0x09d469a2,0x04f29be4,0x2c026a84,0x07dfec43,0x16302ea2,0x0792485a,0x11658462,0x13afc0f2,0x0c459cd6,0x09dd3435,0x078a7a37,0x2c40e992,0x111f84a6,0x1155fdf7,0x2c01ede2,0x075b7fa2,0x1685d342,0x075aeea2,0x0c7b83e4,0x13b0d343,0x113e42a6,0x11a3d4d5,0x13909856,0x2c0204a3,0x0299d2a6,0x13bf9333,0x0a50d4d2,0x0ee57a56,0x2c11a4aa,0x02b07fa2,0x16193b43,0x075c9342,0x2c028291,0x02a0c162,0x076aed57,0x0c4e3393,0x11279be7,0x2c198f35,0x1871eea2,0x02b79c92,0x0f3304f8,0x139fa522,0x2c19a923,0x027a94d4,0x18a8b343,0x2c2915ea,0x04f1bea7,0x0c4d2186,0x16860543,0x02bfd4a2,0x0c647747,0x2c1a0aa6,0x075c92f3,0x09fb4797,0x2c30ce26,0x0eb69a62,0x0c4d1f5a,0x09dd3526,0x13906923,0x2c09ee96,0x16208ee3,0x2c026855,0x09f32bb2,0x8f2c442a,0x70a7a6f0,0x54f27128,0xa3ca6f17,0x3bdc43e0,0x204da6d7,0x2d9641cd,0x2b14e2d2,0x6f39c80f,0x837e0536,0xaa28a0f7,0x12a94be0,0x915239bc,0xaf85c784,0x0c546bd7,0x5fa2c999,0xa8d8b2d2,0x0671c8bd,0xafe6bc7d,0xb1fb1004,0x065288ef,0x04f10aa9,0x748fba8b,0x66354f0b,0x04f82826,0x91d8cdcb,0x90774e2c,0xad9b6f03,0x0e10afa6,0x948f8217,0x8e13522f,0x396e20eb,0x663d1f03,0x07a1e883,0x5fa2c321,0x66639ad3,0x28797f99,0xb425d619,0xaff41814,0xa7da1caf,0x1605cf59,0x9a15792a,0x60eae992,0x6f3b8e6c,0xa3cebbcf,0x91190a95,0x83404d63,0x5fdc92f8,0x347d8951,0x21c78c1b,0x837db3f6,0x94a6f72b,0x839828f3,0x610143d6,0x42cb7c5a,}; +g t[]={0x2f00576f,0x33f2c1f7,0x2f1fb204,0x1b49dda7,0x3d618237,0x42c83a2e,0x4541a121,0x53a72e14,0x1adea1c5,0x5d3cd90b,0x603c289b,0x568d5310,0x339e664f,0x62d0e527,0x51d53c3a,0x3b06de0b,0x62ec13db,0x45bce019,0x620fc251,0x22a4ccf8,0x24a26b0d,0x718915e0,0x3bdc4407,0x40a4f48d,0x5cc90e40,0x67f27ee5,0x0125aeee,0x2fded81e,0x7ba20d4e,0x1c042b18,0x7442f4ab,0x4a2b45e1,0x7dd7e131,0x8802215d,0x793c7eb0,0x7ad99288,0x76b88a6f,0x7aea15b0,0x85a02346,0x3401d0e0,0x8bde4d4e,0x1c042b18,0x7442f4ab,0x4a2b45e1,0x7d04286b,0x5ced1bbf,0x3025cfee,0x2fded81e,0x7ba4b2d0,0x79543a04,0x4850f4c8,0x4a92c0fb,0x79586a84,0x48664053,0x8b2a258f,0x0126f369,0x016c68a2,0x76b44093,0x80770b08,0x76b88a6f,0x7aea15b0,0x85a69ff3,0x6a865f87,0x8a33f131,0x7628343e,0x80ac7ba1,0x3e5dcba9,0x2d5f4c1b,0x7b8dda68,0x76bb5f80,0x4d905394,0x8a7a6d41,0x8097918b,0x78689288,0x2fe6ed44,0x4b0f80f3,0x71b140db,0x62ec13de,0x1f417b36,0x790b1049,0x53c9d65b,0x5bb83ff3,0x71affbd5,0x6e9d819f,0x5d839980,0x71e21f2a,0x70a7a740,0x28e2812b,0x93ed1d08,0x77f907ff,0x5d7d89f0,0x5ec855c7,0x8f2c49f0,0x1f38af31,0x7db71b1d,0xa0bace31,0x2c09d597,0x11380439,0x11567fa3,0x078a46a6,0x18f704f9,0x0278ea52,0x0ec5bfe2,0x13a80a31,0x029202a1,0x1640018a,0x2c09d547,0x0299d487,0x0c4506d3,0x2c295f51,0x18a164a3,0x0772bee4,0x0cc20591,0x07740432,0x161234d7,0x11464721,0x2c295f52,0x13c702a5,0x078a7858,0x0cc20452,0x0782ada2,0x09ecd2a5,0x13989af4,0x18f6d259,0x163f6c32,0x112ea262,0x09e40b23,0x02fe1df7,0x07a20162,0x0ebe5342,0x13bf2df2,0x0c65a2a4,0x09dc0662,0x1146c387,0x163172a5,0x13a02095,0x11a46a35,0x077a2c32,0x05112ce6,0x02b804a3,0x07919b3a,0x1414d4d8,0x09dc0924,0x2c01d3e2,0x07998262,0x09e372f7,0x13a902a3,0x1881d4a8,0x0cc1d2aa,0x0ec703e3,0x16123483,0x13c702a9,0x114de398,0x0cc26997,0x0f32d255,0x18a11552,0x09e421f7,0x2c40e992,0x111f84a6,0x1155fdf7,0x2c01ede2,0x075b7fa2,0x1685d342,0x075aeea2,0x0c7b83e4,0x13b0d343,0x113e42a6,0x11a3d4d5,0x13909856,0x2c0204a3,0x0299d2a6,0x13bf9333,0x0a50d4d2,0x0ee57a56,0x2c11a4aa,0x02b07fa2,0x16193b43,0x075c9342,0x2c028291,0x02a0c162,0x076aed57,0x0c4e3393,0x11279be7,0x2c198f35,0x1871eea2,0x02b79c92,0x0f32d3ea,0x18920bea,0x2c19a923,0x027a9392,0x18b0e837,0x2c11748a,0x0ed57ba4,0x07630548,0x18f70543,0x02bfd4a2,0x0c647747,0x2c30b439,0x2c09bc47,0x0ecdc4a8,0x07a1b7e2,0x18739393,0x111fcb43,0x2c40b881,0x0ef470a3,0x0c5ca8d5,0x0c6430a3,0x114e1456,0x8f2c442a,0x70a7a6f0,0x54f27128,0xa3ca5617,0x3bdc43e0,0x204da6d7,0x2d9641cd,0x2b14e2d2,0x6f39c80f,0x837e0535,0xaa28a0f7,0x10384be0,0x915239bc,0xaf85c784,0x09f356d7,0x5fa2c999,0xa8d8b2d2,0x0671c8bd,0xafe6bc7d,0xb1fb1004,0x065288ef,0x04f10aa9,0x748fba8b,0x66354f0b,0x04f82826,0x91d8cdcb,0x90774e2c,0xad9b6f03,0x0e10afa6,0x948f8217,0x8e13522f,0x396e20eb,0x663d1f03,0x079a4b73,0x5fa2c321,0x66639ad3,0x28797f99,0xb425d619,0xaff41814,0xa7da1caf,0x1605cf59,0x9a15792a,0x60eae992,0x6f3b8e6c,0xa3cebbcf,0x91190a95,0x83404d63,0x5fdc92f8,0x347d8951,0x21c78c1b,0x837db3f6,0x94a6f72b,0x839828f3,0x610143d6,0x42cb7c5a,}; g b=460; -g R[]={0,15324974,4395150,7608367,7608583,9747720,15768839,6331686,15994946,7641382,6600966,6568238,1088807,197670,8665390,6601774,13179970,301257,134,14719239,1088809,198720,10813440,4262980,304430,7642145,6330630,15238702,14726446,7642409,15255086,6596073,18732593,11512810,3312673,12923174,11953,17732,2328644,277096930,7465,4198532,6426766,9741606,567426,128,206118,131200,14815374,32641156,18470705,131204,15768623,18157905,3319079,18393220,31,18400580,2240642,4261956,4464900,1082415,32772191,459200,8397132,6359110,6426758,332096,145536,491520,2236546,72955190,4260932,9570592,244584452,17043521,}; -float2 p=U.u*66; -uint c,i,Y,X=p.x;Y=p.y;i=X+(65-Y)*66; -if(i>=b&&i<3430){ +g R[]={0,234663,68679,2265159,3280003,5348,7376003,1088679,233604,7641382,6600966,2234534,34023,6182,8665390,6601774,4267074,301257,134,14719239,1088809,6210,337920,4262980,5286,7642145,133250,6587686,14726446,7642409,15255086,2270697,18732593,11512810,3312673,12923174,11953,5282,72774,8661474,7465,1049633,33826,9741606,567426,128,206118,131200,14815374,32641156,18470705,131204,15768623,18157905,3319079,18393220,31,18400580,2240642,4261956,4464900,1082415,15994959,459200,4198566,3179555,3213379,332096,145536,7168,2236546,72955190,4260932,9570592,244584452,266305}; +float2 p=U.u*65; +uint c,i,Y,X=p.x;Y=p.y;i=X+(64-Y)*65; +if(i>=b&&i<3353){ c=(i-b)%11;c=c<2?(c<<4)+1:c==10?18:(t[(i-b)/11]>>((7-((c-2)&7))*4)&15)+1; -}else{i-=(i>b)*2970; +}else{i-=(i>b)*2893; c=t[i/5];for(i%=5;i<4;i++)c/=80;c%=80;} Y=(p.y-Y)*6;X=(p.x-X)*6; return R[c]>>(X+Y*5)&1*(X<5); diff --git a/text_shader/6x6.png b/text_shader/6x6.png index ec886c0aad7302f83290a0f3982b7fc2ba666abd..6700a9b5bf1bf61abef4166392bef9c6f093afc5 100644 GIT binary patch literal 8268 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 F{2wCD;~xM3 literal 8344 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%0Dd&b%YUrQjRp_O-oKlg%J%Igou`d~`n(2)An z%uKZ|eUo7fP&+DbRO3=EtMd&rcQY_RC*052#%4f_$|731w@y>gxE0~RmHZ84#bDp~T&_@A5L6cuoRms4BFlz{c zi4qJqa%*czY$nTOEG?O~Iq(}k33;D5f*ouEa_VFwFD5oFE-)+%yZ*};v++VT5uY;w zaF(O|E)TQHY8Y<9Ah7H64aL=KZ#|MwR3#23Xg|KV$>xpH0dW}`8oD0wQ~B#vK=x=O zp-{>xE8{>v;ISMe=g_OZ>Ez@jK-PlF@z*aeq|#`Oq>* zX2Zh*J}Gel(Q!WCb9YK!v?;3>$-+L#!mfxBg_8I0Q80^?jFYurcHH5m7mxBE(WA@Z z7cCsxa@@vf6hRG24s@np{Mr36@Oi0VeA5vIyM~@0B-!J4zvSoNeDL6bi1!K4wbB3e zBj7A37PGDhl6nY!l@`Ts;H)fKAmmZd;Gb7j z3bYze*V9-yI6AXs0%5y3?#_uq7H8+=yqT~L%7UHN)Y2Eqybu@=kPQ;O&x|$m88EwU6bkk9 z0DClsR_Y$)AS@7v&j-UMN)STOWMo4L