diff --git a/Assets/test/QuineGolf.mat b/Assets/test/QuineGolf.mat new file mode 100644 index 0000000..b1b8cc6 --- /dev/null +++ b/Assets/test/QuineGolf.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: QuineGolf + m_Shader: {fileID: 4800000, guid: 0c4c2f5d8a89897eeaca772520f257ab, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/test/QuineGolf.mat.meta b/Assets/test/QuineGolf.mat.meta new file mode 100644 index 0000000..42484bd --- /dev/null +++ b/Assets/test/QuineGolf.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71fb6677d855d7ec3a0fdaea5ec5d779 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/test/TestProps.unity b/Assets/test/TestProps.unity index e6bb9c9..9f321f1 100644 --- a/Assets/test/TestProps.unity +++ b/Assets/test/TestProps.unity @@ -122,6 +122,162 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &97266993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 97267000} + - component: {fileID: 97266999} + - component: {fileID: 97266998} + - component: {fileID: 97266997} + - component: {fileID: 97266996} + - component: {fileID: 97266995} + - component: {fileID: 97266994} + m_Layer: 0 + m_Name: QuineGolf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &97266994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 990f6f4efb7f4ec98ad99f6dff1bc6f6, type: 3} + m_Name: + m_EditorClassIdentifier: + type: 3 + objectId: bab5c804-640f-445c-90c5-fda732b56ca6 + randomNum: 62965840 + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 +--- !u!114 &97266995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a37fd8d654d5c2840a0ab3a5ad65a5ae, type: 3} + m_Name: + m_EditorClassIdentifier: + spawnHeight: 0 + useAdditionalValues: 0 + syncValues: [] + propPrivacy: 1 + subSyncs: [] + spawnableType: 0 + preGeneratedInstanceId: +--- !u!114 &97266996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12974925555b471580cacf5d2d5fa9e3, type: 3} + m_Name: + m_EditorClassIdentifier: + gripType: 1 + gripOrigin: {fileID: 0} + disallowTheft: 0 + maximumGrabDistance: 0 + snappingReferences: [] + autoHold: 0 + updateWithPhysics: 1 + ikReference: {fileID: 0} +--- !u!65 &97266997 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 0.05} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &97266998 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 71fb6677d855d7ec3a0fdaea5ec5d779, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &97266999 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &97267000 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97266993} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!1 &393682612 GameObject: m_ObjectHideFlags: 0 @@ -1451,7 +1607,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2046637839} m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: -1, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/test/quine_golf.shader b/Assets/test/quine_golf.shader new file mode 100644 index 0000000..5e5f829 --- /dev/null +++ b/Assets/test/quine_golf.shader @@ -0,0 +1,29 @@ +Shader"Q"{SubShader{Pass{CGPROGRAM#pragma vertex v1 +#pragma fragment f1 +#include"UnityCG.cginc" +#define u uint +#define w const u +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 v1(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 f1(V U):SV_Target{ +w t[]={0x13140b0e,0x0f151617,0x16181319,0x0c13140b,0x0e0f1518,0x1a0b1b1b,0x181c1d1a,0x1e1f1d1e,0x20212223,0x150b2425,0x0b00260f,0x15270f11,0x00260228,0x2223150b,0x24250b00,0x10150b24,0x250f2927,0x00100228,0x222a290d,0x2b190e0f,0x162c292a,0x272d1c1d,0x2e0d242a,0x290d1628,0x220e0f10,0x2a290f00,0x1900192a,0x29272822,0x0e0f102a,0x290f002f,0x000d3029,0x1b270019,0x281b2715,0x190d2700,0x2018102b,0x300b2705,0x0026311a,0x1f133233,0x321f3435,0x102b300b,0x27030019,0x31333637,0x1c1f1f1e,0x3801352c,0x34323339,0x3a3b361e,0x3336373a,0x32341a2c,0x333a3234,0x13332034,0x1c363a32,0x383c3528,0x1b271519,0x0d27003b,0x18102b30,0x0b270300,0x19313336,0x371c1f1f,0x1e380135,0x102b300b,0x27050026,0x31133b3a,0x1a1f1332,0x33321f34,0x352c3432,0x33393a3b,0x361e3336,0x373a1f2c,0x331a2c33,0x3a133336,0x1e361f3c,0x35283b00,0x26023d20,0x00263e18,0x3b003035,0x2c343233,0x393a1336,0x332c1a3a,0x32341333,0x20341c36,0x3a32383d,0x263e352c,0x34323339,0x3a323432,0x3332203f,0x3240363a,0x1f2c331a,0x2c333d3b,0x1200303e,0x352c3432,0x33393a32,0x34323332,0x203f3240,0x363a3b36,0x1e333637,0x3a1f2c33,0x1a2c333a,0x1333361e,0x361f3d30,0x3e35302e,0x26412c29,0x2a272d1f,0x0c420f0d,0x2733301c,0x2b2a231a,0x301b3d26,0x2e263e35,0x302e1941,0x262e1935,0x150f2719,0x15290030,0x353c2810,0x2b300b27,0x04001002,0x3d3b002c,0x3e31133b,0x3a330b15,0x240f2718,0x282f0027,0x43444118,0x453c3528,0x2f003f41,0x09040409,0x35282f00,0x0c410509,0x0135282f,0x00204344,0x43054441,0x18180112,0x01120112,0x013c1218,0x01120207,0x07080505,0x07040101,0x12020707,0x0805060a,0x0a050812,0x08030303,0x3c121801,0x12050105,0x03040304,0x02091206,0x0105090a,0x06060203,0x12070208,0x033c1218,0x01120201,0x01090906,0x04080612,0x02070204,0x08070507,0x03011202,0x060a0802,0x3c121801,0x12020702,0x070a030a,0x060a0912,0x02070207,0x0a020a07,0x05091202,0x060a0802,0x3c121801,0x12090109,0x05070506,0x01051202,0x01020102,0x09060109,0x08120203,0x0405053c,0x12180112,0x02070207,0x0a030a06,0x0a091206,0x01060505,0x05090112,0x04030602,0x063c1218,0x01120207,0x07080506,0x08090605,0x12060106,0x05050509,0x04120802,0x08053c12,0x18011203,0x01030202,0x07020109,0x12020702,0x070a0207,0x06010512,0x04030702,0x023c1218,0x01120207,0x07080506,0x08090605,0x12020707,0x08050509,0x05020a12,0x02060a08,0x023c1218,0x01120207,0x02070a02,0x07060201,0x12020707,0x08050705,0x09010112,0x02060a08,0x023c1218,0x01120906,0x090a0a04,0x06020912,0x020a0809,0x05040112,0x013c1218,0x01120208,0x02080a09,0x07090809,0x12020103,0x07050404,0x01031202,0x080a093c,0x12180112,0x06010606,0x04070703,0x12050109,0x0906080a,0x12013c12,0x18011209,0x06090a0a,0x04060209,0x1209010a,0x03060305,0x01041202,0x05040905,0x3c121801,0x12060106,0x06040707,0x03120501,0x09090801,0x0412013c,0x12180112,0x02010201,0x06090107,0x04120704,0x080a0402,0x03080112,0x08030303,0x3c121801,0x12050802,0x0702010a,0x080a1207,0x0601020a,0x02071201,0x3c121803,0x01020403,0x07060a03,0x12020608,0x0a010403,0x12011201,0x3c121801,0x12020702,0x08020307,0x03010712,0x02070702,0x04050509,0x02071202,0x060a0802,0x3c121801,0x12020802,0x080a0907,0x0a020a12,0x02010503,0x04010601,0x03120208,0x0a093c12,0x18011202,0x01020106,0x09010704,0x1204090a,0x05090907,0x12013c12,0x18011201,0x12070104,0x0a080a08,0x08071207,0x08020109,0x09073c12,0x18090203,0x07050705,0x01011202,0x0707080a,0x09090309,0x07120207,0x07080506,0x08090a02,0x1202060a,0x08023c12,0x18011205,0x01050304,0x03040105,0x12050105,0x03030a07,0x06071203,0x09070a07,0x3c121801,0x12090609,0x0a0a0406,0x02091204,0x04060605,0x05041201,0x3c121801,0x12020102,0x01060901,0x07041202,0x0802080a,0x08070609,0x03120207,0x0304013c,0x12180112,0x0508030a,0x04040209,0x03120501,0x09090609,0x0312013c,0x12180112,0x06050805,0x09080403,0x12020203,0x05030801,0x09060212,0x02060507,0x033c1218,0x01120207,0x07080506,0x09070603,0x12020203,0x05030801,0x0a080212,0x02060507,0x033c1218,0x01120208,0x02080a09,0x070a020a,0x12020802,0x080a0807,0x07040112,0x02070304,0x013c1218,0x01120207,0x07080506,0x08090605,0x12020707,0x08050608,0x090a0212,0x02060a08,0x023c1218,0x01120207,0x07080506,0x08090a02,0x120a0203,0x05090402,0x0a0a1203,0x0108073c,0x12180112,0x02070708,0x05060809,0x0a021203,0x02040a01,0x06070a0a,0x06120306,0x0507043c,0x12180112,0x0a020504,0x01070702,0x05120a02,0x05040107,0x07020512,0x06053c12,0x18020102,0x01070104,0x06031202,0x0802080a,0x09070908,0x09120409,0x0a030904,0x0912013c,0x12180901,0x09070607,0x04090512,0x0906090a,0x0a040508,0x01120803,0x03030107,0x0812013c,0x12180112,0x02090103,0x0301020a,0x06061204,0x07040801,0x0a0a1201,0x3c121801,0x12020802,0x080a0807,0x01090912,0x07080201,0x09090712,0x013c1218,0x01120301,0x03020501,0x08030912,0x03010605,0x06090505,0x05120301,0x07013c12,0x18030204,0x02020101,0x07080312,0x02070208,0x020a0306,0x08061202,0x0702070a,0x03090907,0x05120a07,0x3c121801,0x12020802,0x080a0907,0x0a020912,0x04090a03,0x09040912,0x013c1218,0x01120501,0x05030403,0x03060312,0x02090502,0x02080712,0x07020709,0x3c121801,0x12050105,0x03040303,0x06031205,0x01050304,0x03030207,0x1208020a,0x033c1218,0x01120207,0x07080506,0x08090605,0x12020707,0x08050608,0x090a0212,0x03060505,0x043c1218,0x02070204,0x08070705,0x01011202,0x07070805,0x06080a02,0x09120706,0x02040601,0x0812013c,0x12180112,0x07020709,0x12011201,0x3c121801,0x12020901,0x03030108,0x01040112,0x07060204,0x06020612,0x013c1218,0x01120207,0x07080506,0x08090605,0x12050109,0x09070806,0x12013c12,0x18011202,0x06080a01,0x01091205,0x01050303,0x07010509,0x12013c12,0x18011205,0x01050304,0x03030603,0x12050105,0x03040303,0x02071202,0x06040905,0x3c121801,0x12050105,0x03040303,0x06031202,0x06020206,0x03090508,0x03120403,0x0409033c,0x12180112,0x02070708,0x05060809,0x0a021202,0x09080107,0x03060706,0x02120306,0x0505083c,0x12180112,0x0206080a,0x01030112,0x05010503,0x03070105,0x0912013c,0x12180112,0x02010603,0x08080106,0x06120202,0x08060906,0x05070205,0x12040307,0x02053c12,0x18011202,0x01050408,0x06020808,0x0a120a02,0x01010501,0x010a0312,0x03060505,0x043c1218,0x01120208,0x02080a08,0x0506060a,0x12020802,0x080a0907,0x0a020912,0x080a0a01,0x3c121801,0x12050105,0x03040303,0x06031202,0x0802080a,0x08070109,0x09120307,0x0302053c,0x12180207,0x08020207,0x09011201,0x12011201,0x3c121801,0x12020707,0x05050a01,0x06010512,0x02070708,0x05060809,0x0a021203,0x06050504,0x3c121801,0x12050105,0x03040303,0x01071205,0x01050306,0x05080505,0x12040701,0x093c1218,0x01120301,0x0302020a,0x03020712,0x03010302,0x02070201,0x09120203,0x0402033c,0x12180112,0x09010905,0x06090306,0x03120901,0x09050705,0x05040312,0x04010a07,0x3c121801,0x12020106,0x03080801,0x06061202,0x01020106,0x09010605,0x12040905,0x073c1218,0x01120201,0x0601080a,0x07080a12,0x02070401,0x06050209,0x04071204,0x03070202,0x3c121801,0x12030202,0x040a030a,0x03020712,0x09030608,0x06040712,0x013c1218,0x02080208,0x0a080701,0x07051202,0x0702070a,0x03090907,0x05120804,0x07050801,0x05120305,0x0708033c,0x12180112,0x03010302,0x02070206,0x07120301,0x03020207,0x02010912,0x02060408,0x033c1218,0x01120901,0x09050705,0x05050512,0x09010905,0x07050504,0x03120206,0x0501093c,0x12180112,0x05010307,0x060a0406,0x03120207,0x0705010a,0x07030901,0x1202060a,0x08023c12,0x18011202,0x01020404,0x02080704,0x03120708,0x01010309,0x0812013c,0x12180112,0x05010503,0x03070105,0x09120206,0x080a0204,0x0512013c,0x12180112,0x01120203,0x0812013c,0x12180112,0x09010709,0x09030402,0x01120301,0x030a0202,0x09050112,0x073c1218,0x01120906,0x090a0a04,0x06020912,0x0a010809,0x0403090a,0x02120803,0x03033c12,0x18011203,0x01030a02,0x02090501,0x12090107,0x09090304,0x0201120a,0x073c1218,0x01120301,0x02080506,0x03050a12,0x02020401,0x06080409,0x05091201,0x3c121801,0x12030102,0x08030106,0x08081202,0x01090101,0x0506060a,0x0312013c,0x123c3528,0x102b300b,0x27001112,0x2d412c2e,0x192e2d46,0x08073511,0x412c2e19,0x2e114602,0x06033528,0x19000d12,0x37411135,0x28190039,0x412d3528,0x19002a41,0x37473d08,0x0648393e,0x46020603,0x35282a10,0x003d2a49,0x410c4a4a,0x2a4b0c47,0x3f3e0018,0x2819000e,0x413d2a48,0x0c3e4c02,0x0235282a,0x103d0e4b,0x033e0d41,0x3d0e4b4b,0x053e4702,0x35280f2b,0x1b0f002a,0x103d0e41,0x4102013e,0x0d410209,0x35280f2b,0x1b0f000d,0x413d2743,0x3d2a480c,0x3e4d0202,0x4449493d,0x3d08483d,0x3d0e4803,0x3e4a083e,0x3e46053e,0x4a02063e,0x47023528,0x3c0f2b1b,0x0f18282a,0x103d2a49,0x0c3e2a48,0x413f4802,0x35280d41,0x27432a4d,0x05444949,0x3d3d0448,0x3d2a4a04,0x3e3e4609,0x3e4a0306,0x06353c28,0x1900272d,0x413d2d48,0x393e4602,0x07352819,0x00271141,0x3d114837,0x3e460935,0x28150f27,0x19152900,0x20430d44,0x43272d4d,0x05444949,0x3d271147,0x3d3d272d,0x4a043e46,0x093e3e4a,0x0235283c,0x3634381c,0x1d3c3c3c,}; +w L=8338; +w b=480; +w A[][4]={{0,0,0,0},{0,1667446300,1667459947,7222},{0,404232318,504895512,6172},{0,100885375,1613764620,15971},{0,1616929598,1616919648,15971},{0,808464504,1010185087,12344},{0,1616929598,50544480,32515},{0,1667457854,50544483,7174},{0,202116108,1616916504,32611},{0,1667457854,1667448419,15971},{0,1616916510,1667464800,15971},{0,858993518,1978430,0},{0,1717986878,102643302,1798},{0,50553662,4088579,0},{0,858993518,809252403,14384},{0,50553662,4088703,0},{0,101058063,637931270,7222},{0,471610979,6501916,0},{201326592,1579032,0,0},{0,1617126206,1661344816,15971},{0,1717986919,104230502,1798},{0,101058063,3894886,0},{0,0,603979776,6710886},{812646400,1667988286,1667457891,15971},{0,404232304,404229656,28696},{0,858993518,3355443,0},{0,101058063,1717976582,16230},{0,472933182,4088582,0},{0,54748732,1124270851,15462},{0,1667458652,1124270971,15462},{0,1717986919,1717976630,16230},{0,1667457854,1667457891,15971},{0,1667457891,912483199,2076},{0,1667457891,2139056995,25463},{0,914306614,914306614,54},{101060352,1717986878,3892838,0},{808656384,858993470,7222067,0},{0,1802201955,3637099,0},{0,1717976088,6710886,0},{0,202140728,205458444,2060},{2131100672,1617192575,1616928864,96},{0,1717986918,3892838,0},{0,404232252,1841176,6168},{0,404232252,404232216,7192},{0,1667457854,1667457891,25443},{1613766400,1667457918,6513507,0},{0,6168,0,0},{0,1802207030,6513515,0},{0,1667457854,4088675,0},{0,1579008,404226048,0},{0,404232252,404232216,15384},{0,404232252,1511528472,32382},{0,1667457891,1870625651,25447},{0,1579020,404226048,0},{0,105277055,1175854614,32614},{0,1043751779,910040092,25443},{0,1717974559,1717986918,7990},{0,404232252,1717976088,26214},{16711680,0,0,0},{0,1664490504,1667457891,25443},{0,404232206,404254744,3608},{0,202119216,202116108,12312},{0,808458252,808464432,3096},{0,105277055,101058054,3846},{0,105079679,1630541836,32611},{0,2113929216,8257536,0},{1717976064,1616928864,7364704,24672},{0,202116156,202116108,15372},{0,808464444,808464432,15408},{0,402659352,1664096280,15971},{0,1013317632,6700287,0},{0,404226048,1579134,0},{0,0,127,0},{0,806882310,202911840,6},{0,858993518,907832891,7222},{0,202911840,806882310,96},{0,201745249,1130573848,0},{0,201720577,1080045592,0},}; +float x,y=U.u.y*76;x=U.u.x*152; +u c,X=x; +u Y=y; +u i=X+(75-Y)*152; +if (i>=b&&i>((7-((d-2)&7))*4)&15)+1; +}else{ +if(i>b)i-=L-1; +c=t[i/4]>>((3-(i&3))*8)&255;} +u ty=(y-Y)*16; +u tx=(x-X)*8; +return A[c][ty/4]>>(tx+((ty&3)*8))&1; +}ENDCG}}} \ No newline at end of file diff --git a/Assets/test/quine_golf.shader.meta b/Assets/test/quine_golf.shader.meta new file mode 100644 index 0000000..9585ade --- /dev/null +++ b/Assets/test/quine_golf.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0c4c2f5d8a89897eeaca772520f257ab +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/text_shader/out_golfed.h b/text_shader/out_golfed.h new file mode 100644 index 0000000..fb9d5af --- /dev/null +++ b/text_shader/out_golfed.h @@ -0,0 +1,4 @@ +w t[]={0x13140b0e,0x0f151617,0x16181319,0x0c13140b,0x0e0f1518,0x1a0b1b1b,0x181c1d1a,0x1e1f1d1e,0x20212223,0x150b2425,0x0b00260f,0x15270f11,0x00260228,0x2223150b,0x24250b00,0x10150b24,0x250f2927,0x00100228,0x222a290d,0x2b190e0f,0x162c292a,0x272d1c1d,0x2e0d242a,0x290d1628,0x220e0f10,0x2a290f00,0x1900192a,0x29272822,0x0e0f102a,0x290f002f,0x000d3029,0x1b270019,0x281b2715,0x190d2700,0x2018102b,0x300b2705,0x0026311a,0x1f133233,0x321f3435,0x102b300b,0x27030019,0x31333637,0x1c1f1f1e,0x3801352c,0x34323339,0x3a3b361e,0x3336373a,0x32341a2c,0x333a3234,0x13332034,0x1c363a32,0x383c3528,0x1b271519,0x0d27003b,0x18102b30,0x0b270300,0x19313336,0x371c1f1f,0x1e380135,0x102b300b,0x27050026,0x31133b3a,0x1a1f1332,0x33321f34,0x352c3432,0x33393a3b,0x361e3336,0x373a1f2c,0x331a2c33,0x3a133336,0x1e361f3c,0x35283b00,0x26023d20,0x00263e18,0x3b003035,0x2c343233,0x393a1336,0x332c1a3a,0x32341333,0x20341c36,0x3a32383d,0x263e352c,0x34323339,0x3a323432,0x3332203f,0x3240363a,0x1f2c331a,0x2c333d3b,0x1200303e,0x352c3432,0x33393a32,0x34323332,0x203f3240,0x363a3b36,0x1e333637,0x3a1f2c33,0x1a2c333a,0x1333361e,0x361f3d30,0x3e35302e,0x26412c29,0x2a272d1f,0x0c420f0d,0x2733301c,0x2b2a231a,0x301b3d26,0x2e263e35,0x302e1941,0x262e1935,0x150f2719,0x15290030,0x353c2810,0x2b300b27,0x04001002,0x3d3b002c,0x3e31133b,0x3a330b15,0x240f2718,0x282f0027,0x43444118,0x453c3528,0x2f003f41,0x09040409,0x35282f00,0x0c410509,0x0135282f,0x00204344,0x43054441,0x18180112,0x01120112,0x013c1218,0x01120207,0x07080505,0x07040101,0x12020707,0x0805060a,0x0a050812,0x08030303,0x3c121801,0x12050105,0x03040304,0x02091206,0x0105090a,0x06060203,0x12070208,0x033c1218,0x01120201,0x01090906,0x04080612,0x02070204,0x08070507,0x03011202,0x060a0802,0x3c121801,0x12020702,0x070a030a,0x060a0912,0x02070207,0x0a020a07,0x05091202,0x060a0802,0x3c121801,0x12090109,0x05070506,0x01051202,0x01020102,0x09060109,0x08120203,0x0405053c,0x12180112,0x02070207,0x0a030a06,0x0a091206,0x01060505,0x05090112,0x04030602,0x063c1218,0x01120207,0x07080506,0x08090605,0x12060106,0x05050509,0x04120802,0x08053c12,0x18011203,0x01030202,0x07020109,0x12020702,0x070a0207,0x06010512,0x04030702,0x023c1218,0x01120207,0x07080506,0x08090605,0x12020707,0x08050509,0x05020a12,0x02060a08,0x023c1218,0x01120207,0x02070a02,0x07060201,0x12020707,0x08050705,0x09010112,0x02060a08,0x023c1218,0x01120906,0x090a0a04,0x06020912,0x020a0809,0x05040112,0x013c1218,0x01120208,0x02080a09,0x07090809,0x12020103,0x07050404,0x01031202,0x080a093c,0x12180112,0x06010606,0x04070703,0x12050109,0x0906080a,0x12013c12,0x18011209,0x06090a0a,0x04060209,0x1209010a,0x03060305,0x01041202,0x05040905,0x3c121801,0x12060106,0x06040707,0x03120501,0x09090801,0x0412013c,0x12180112,0x02010201,0x06090107,0x04120704,0x080a0402,0x03080112,0x08030303,0x3c121801,0x12050802,0x0702010a,0x080a1207,0x0601020a,0x02071201,0x3c121803,0x01020403,0x07060a03,0x12020608,0x0a010403,0x12011201,0x3c121801,0x12020702,0x08020307,0x03010712,0x02070702,0x04050509,0x02071202,0x060a0802,0x3c121801,0x12020802,0x080a0907,0x0a020a12,0x02010503,0x04010601,0x03120208,0x0a093c12,0x18011202,0x01020106,0x09010704,0x1204090a,0x05090907,0x12013c12,0x18011201,0x12070104,0x0a080a08,0x08071207,0x08020109,0x09073c12,0x18090203,0x07050705,0x01011202,0x0707080a,0x09090309,0x07120207,0x07080506,0x08090a02,0x1202060a,0x08023c12,0x18011205,0x01050304,0x03040105,0x12050105,0x03030a07,0x06071203,0x09070a07,0x3c121801,0x12090609,0x0a0a0406,0x02091204,0x04060605,0x05041201,0x3c121801,0x12020102,0x01060901,0x07041202,0x0802080a,0x08070609,0x03120207,0x0304013c,0x12180112,0x0508030a,0x04040209,0x03120501,0x09090609,0x0312013c,0x12180112,0x06050805,0x09080403,0x12020203,0x05030801,0x09060212,0x02060507,0x033c1218,0x01120207,0x07080506,0x09070603,0x12020203,0x05030801,0x0a080212,0x02060507,0x033c1218,0x01120208,0x02080a09,0x070a020a,0x12020802,0x080a0807,0x07040112,0x02070304,0x013c1218,0x01120207,0x07080506,0x08090605,0x12020707,0x08050608,0x090a0212,0x02060a08,0x023c1218,0x01120207,0x07080506,0x08090a02,0x120a0203,0x05090402,0x0a0a1203,0x0108073c,0x12180112,0x02070708,0x05060809,0x0a021203,0x02040a01,0x06070a0a,0x06120306,0x0507043c,0x12180112,0x0a020504,0x01070702,0x05120a02,0x05040107,0x07020512,0x06053c12,0x18020102,0x01070104,0x06031202,0x0802080a,0x09070908,0x09120409,0x0a030904,0x0912013c,0x12180901,0x09070607,0x04090512,0x0906090a,0x0a040508,0x01120803,0x03030107,0x0812013c,0x12180112,0x02090103,0x0301020a,0x06061204,0x07040801,0x0a0a1201,0x3c121801,0x12020802,0x080a0807,0x01090912,0x07080201,0x09090712,0x013c1218,0x01120301,0x03020501,0x08030912,0x03010605,0x06090505,0x05120301,0x07013c12,0x18030204,0x02020101,0x07080312,0x02070208,0x020a0306,0x08061202,0x0702070a,0x03090907,0x05120a07,0x3c121801,0x12020802,0x080a0907,0x0a020912,0x04090a03,0x09040912,0x013c1218,0x01120501,0x05030403,0x03060312,0x02090502,0x02080712,0x07020709,0x3c121801,0x12050105,0x03040303,0x06031205,0x01050304,0x03030207,0x1208020a,0x033c1218,0x01120207,0x07080506,0x08090605,0x12020707,0x08050608,0x090a0212,0x03060505,0x043c1218,0x02070204,0x08070705,0x01011202,0x07070805,0x06080a02,0x09120706,0x02040601,0x0812013c,0x12180112,0x07020709,0x12011201,0x3c121801,0x12020901,0x03030108,0x01040112,0x07060204,0x06020612,0x013c1218,0x01120207,0x07080506,0x08090605,0x12050109,0x09070806,0x12013c12,0x18011202,0x06080a01,0x01091205,0x01050303,0x07010509,0x12013c12,0x18011205,0x01050304,0x03030603,0x12050105,0x03040303,0x02071202,0x06040905,0x3c121801,0x12050105,0x03040303,0x06031202,0x06020206,0x03090508,0x03120403,0x0409033c,0x12180112,0x02070708,0x05060809,0x0a021202,0x09080107,0x03060706,0x02120306,0x0505083c,0x12180112,0x0206080a,0x01030112,0x05010503,0x03070105,0x0912013c,0x12180112,0x02010603,0x08080106,0x06120202,0x08060906,0x05070205,0x12040307,0x02053c12,0x18011202,0x01050408,0x06020808,0x0a120a02,0x01010501,0x010a0312,0x03060505,0x043c1218,0x01120208,0x02080a08,0x0506060a,0x12020802,0x080a0907,0x0a020912,0x080a0a01,0x3c121801,0x12050105,0x03040303,0x06031202,0x0802080a,0x08070109,0x09120307,0x0302053c,0x12180207,0x08020207,0x09011201,0x12011201,0x3c121801,0x12020707,0x05050a01,0x06010512,0x02070708,0x05060809,0x0a021203,0x06050504,0x3c121801,0x12050105,0x03040303,0x01071205,0x01050306,0x05080505,0x12040701,0x093c1218,0x01120301,0x0302020a,0x03020712,0x03010302,0x02070201,0x09120203,0x0402033c,0x12180112,0x09010905,0x06090306,0x03120901,0x09050705,0x05040312,0x04010a07,0x3c121801,0x12020106,0x03080801,0x06061202,0x01020106,0x09010605,0x12040905,0x073c1218,0x01120201,0x0601080a,0x07080a12,0x02070401,0x06050209,0x04071204,0x03070202,0x3c121801,0x12030202,0x040a030a,0x03020712,0x09030608,0x06040712,0x013c1218,0x02080208,0x0a080701,0x07051202,0x0702070a,0x03090907,0x05120804,0x07050801,0x05120305,0x0708033c,0x12180112,0x03010302,0x02070206,0x07120301,0x03020207,0x02010912,0x02060408,0x033c1218,0x01120901,0x09050705,0x05050512,0x09010905,0x07050504,0x03120206,0x0501093c,0x12180112,0x05010307,0x060a0406,0x03120207,0x0705010a,0x07030901,0x1202060a,0x08023c12,0x18011202,0x01020404,0x02080704,0x03120708,0x01010309,0x0812013c,0x12180112,0x05010503,0x03070105,0x09120206,0x080a0204,0x0512013c,0x12180112,0x01120203,0x0812013c,0x12180112,0x09010709,0x09030402,0x01120301,0x030a0202,0x09050112,0x073c1218,0x01120906,0x090a0a04,0x06020912,0x0a010809,0x0403090a,0x02120803,0x03033c12,0x18011203,0x01030a02,0x02090501,0x12090107,0x09090304,0x0201120a,0x073c1218,0x01120301,0x02080506,0x03050a12,0x02020401,0x06080409,0x05091201,0x3c121801,0x12030102,0x08030106,0x08081202,0x01090101,0x0506060a,0x0312013c,0x123c3528,0x102b300b,0x27001112,0x2d412c2e,0x192e2d46,0x08073511,0x412c2e19,0x2e114602,0x06033528,0x19000d12,0x37411135,0x28190039,0x412d3528,0x19002a41,0x37473d08,0x0648393e,0x46020603,0x35282a10,0x003d2a49,0x410c4a4a,0x2a4b0c47,0x3f3e0018,0x2819000e,0x413d2a48,0x0c3e4c02,0x0235282a,0x103d0e4b,0x033e0d41,0x3d0e4b4b,0x053e4702,0x35280f2b,0x1b0f002a,0x103d0e41,0x4102013e,0x0d410209,0x35280f2b,0x1b0f000d,0x413d2743,0x3d2a480c,0x3e4d0202,0x4449493d,0x3d08483d,0x3d0e4803,0x3e4a083e,0x3e46053e,0x4a02063e,0x47023528,0x3c0f2b1b,0x0f18282a,0x103d2a49,0x0c3e2a48,0x413f4802,0x35280d41,0x27432a4d,0x05444949,0x3d3d0448,0x3d2a4a04,0x3e3e4609,0x3e4a0306,0x06353c28,0x1900272d,0x413d2d48,0x393e4602,0x07352819,0x00271141,0x3d114837,0x3e460935,0x28150f27,0x19152900,0x20430d44,0x43272d4d,0x05444949,0x3d271147,0x3d3d272d,0x4a043e46,0x093e3e4a,0x0235283c,0x3634381c,0x1d3c3c3c,}; +w L=8338; +w b=480; +w A[][4]={{0,0,0,0},{0,1667446300,1667459947,7222},{0,404232318,504895512,6172},{0,100885375,1613764620,15971},{0,1616929598,1616919648,15971},{0,808464504,1010185087,12344},{0,1616929598,50544480,32515},{0,1667457854,50544483,7174},{0,202116108,1616916504,32611},{0,1667457854,1667448419,15971},{0,1616916510,1667464800,15971},{0,858993518,1978430,0},{0,1717986878,102643302,1798},{0,50553662,4088579,0},{0,858993518,809252403,14384},{0,50553662,4088703,0},{0,101058063,637931270,7222},{0,471610979,6501916,0},{201326592,1579032,0,0},{0,1617126206,1661344816,15971},{0,1717986919,104230502,1798},{0,101058063,3894886,0},{0,0,603979776,6710886},{812646400,1667988286,1667457891,15971},{0,404232304,404229656,28696},{0,858993518,3355443,0},{0,101058063,1717976582,16230},{0,472933182,4088582,0},{0,54748732,1124270851,15462},{0,1667458652,1124270971,15462},{0,1717986919,1717976630,16230},{0,1667457854,1667457891,15971},{0,1667457891,912483199,2076},{0,1667457891,2139056995,25463},{0,914306614,914306614,54},{101060352,1717986878,3892838,0},{808656384,858993470,7222067,0},{0,1802201955,3637099,0},{0,1717976088,6710886,0},{0,202140728,205458444,2060},{2131100672,1617192575,1616928864,96},{0,1717986918,3892838,0},{0,404232252,1841176,6168},{0,404232252,404232216,7192},{0,1667457854,1667457891,25443},{1613766400,1667457918,6513507,0},{0,6168,0,0},{0,1802207030,6513515,0},{0,1667457854,4088675,0},{0,1579008,404226048,0},{0,404232252,404232216,15384},{0,404232252,1511528472,32382},{0,1667457891,1870625651,25447},{0,1579020,404226048,0},{0,105277055,1175854614,32614},{0,1043751779,910040092,25443},{0,1717974559,1717986918,7990},{0,404232252,1717976088,26214},{16711680,0,0,0},{0,1664490504,1667457891,25443},{0,404232206,404254744,3608},{0,202119216,202116108,12312},{0,808458252,808464432,3096},{0,105277055,101058054,3846},{0,105079679,1630541836,32611},{0,2113929216,8257536,0},{1717976064,1616928864,7364704,24672},{0,202116156,202116108,15372},{0,808464444,808464432,15408},{0,402659352,1664096280,15971},{0,1013317632,6700287,0},{0,404226048,1579134,0},{0,0,127,0},{0,806882310,202911840,6},{0,858993518,907832891,7222},{0,202911840,806882310,96},{0,201745249,1130573848,0},{0,201720577,1080045592,0},}; diff --git a/text_shader/src/main.rs b/text_shader/src/main.rs index 890a63c..c244a09 100644 --- a/text_shader/src/main.rs +++ b/text_shader/src/main.rs @@ -8,6 +8,7 @@ use image::{GenericImageView, ImageReader}; const FULL_CHARSET: &[u8] = b" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\n\t"; fn main() { + golfed(); // source code conversion let source_text = read_to_string("../Assets/test/quine.shader").unwrap(); let mut encoded_text: Vec = Vec::new(); @@ -35,6 +36,10 @@ fn main() { temp = 0; } } + if i > 0{ + temp <<= (4-i)*8; + encoded_text.push(temp); + } let mut out_string = String::new(); out_string += "\t\t\t\tconst uint text[] = {"; for t in &encoded_text { @@ -76,3 +81,75 @@ fn main() { let mut file = File::create("out.h").unwrap(); file.write_all(out_string.as_bytes()).unwrap(); } + + +fn golfed() { + // source code conversion + let source_text = read_to_string("../Assets/test/quine_golf.shader").unwrap(); + let mut encoded_text: Vec = Vec::new(); + let mut temp = 0; + let mut i = 0; + let mut blob_start = 0; + let mut used_charset:Vec<_> = " 0123456789abcdefx,".chars().collect(); + for (index, char) in source_text.chars().enumerate() { + if char == '?' { + blob_start = index; + } + temp <<= 8; + let char_index = used_charset + .iter() + .position(|&c| c == char) + .unwrap_or_else(|| { + used_charset.push(char); + used_charset.len() - 1 + }); + temp |= (char_index as u32) & 0xff; + i += 1; + if i == 4 { + i = 0; + encoded_text.push(temp); + temp = 0; + } + } + if i > 0{ + temp <<= (4-i)*8; + encoded_text.push(temp); + } + let mut out_string = String::new(); + out_string += "w t[]={"; + for t in &encoded_text { + out_string += &format!("{t:#010x},"); + } + out_string += "};\n"; + out_string += &format!("w L={};\n", encoded_text.len()*11); + out_string += &format!("w b={blob_start};\n"); + + // font + let img = ImageReader::open("6x6.png").unwrap().decode().unwrap(); + let mut out = Vec::new(); + for c in used_charset { + let col = c as u32 & 0b1_1111; + let row = (c as u32 >> 5) & 0b111; + let mut encoded: [u32; 4] = [0; 4]; + for section in 0..4 { + for y in 0..4 { + for x in 0..8 { + let px = col * 9 + x; + let py = row * 16 + (16 - 1 - section * 4) - y; + let pixel = (img.get_pixel(px, py).0[0] != 0) as u32; + let offset = x + ((y & 3) << 3); + encoded[section as usize] |= pixel << offset; + } + } + } + out.push(encoded); + } + + out_string += "w A[][4]={"; + for (_i, c) in out.iter().enumerate() { + out_string += &format!("{{{},{},{},{}}},", c[0], c[1], c[2], c[3]); + } + out_string += "};\n"; + let mut file = File::create("out_golfed.h").unwrap(); + file.write_all(out_string.as_bytes()).unwrap(); +} \ No newline at end of file