diff --git a/Assets/test/Quine.mat b/Assets/test/Quine.mat new file mode 100644 index 0000000..6f568cd --- /dev/null +++ b/Assets/test/Quine.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: Quine + m_Shader: {fileID: 4800000, guid: 06b6120c7bdd1fac69ccd01f15f08d36, 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/Quine.mat.meta b/Assets/test/Quine.mat.meta new file mode 100644 index 0000000..648c477 --- /dev/null +++ b/Assets/test/Quine.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ca30503feb131693a50258ba008b3d0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/test/TestProps.unity b/Assets/test/TestProps.unity index ac6d800..a589cc1 100644 --- a/Assets/test/TestProps.unity +++ b/Assets/test/TestProps.unity @@ -38,12 +38,11 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.17883426, g: 0.22392553, b: 0.30580956, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -98,7 +97,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 0} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +117,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -142,7 +143,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!65 &393682613 BoxCollider: m_ObjectHideFlags: 0 @@ -167,10 +168,12 @@ MeshRenderer: 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: @@ -195,6 +198,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &393682615 MeshFilter: m_ObjectHideFlags: 0 @@ -211,8 +215,9 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 393682612} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 3} + m_LocalPosition: {x: -0.5, y: 0, z: 3.5} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 6 @@ -231,6 +236,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 3029ae24-4afd-4d17-965e-54a3fb4b4c55 + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &393682618 MonoBehaviour: m_ObjectHideFlags: 0 @@ -268,6 +276,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!1 &560901120 GameObject: @@ -290,7 +299,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!135 &560901121 SphereCollider: m_ObjectHideFlags: 0 @@ -322,6 +331,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!114 &560901123 MonoBehaviour: @@ -337,6 +347,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: dfe985d4-0deb-4923-bd4a-37ddf0880b43 + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &560901124 MonoBehaviour: m_ObjectHideFlags: 0 @@ -367,10 +380,12 @@ MeshRenderer: 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: @@ -395,6 +410,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &560901126 MeshFilter: m_ObjectHideFlags: 0 @@ -413,6 +429,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2, y: 0, z: 2} m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 4 @@ -438,7 +455,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!65 &627535769 BoxCollider: m_ObjectHideFlags: 0 @@ -466,6 +483,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 267a3820-e773-4d80-aa35-8f7551bc813a + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &627535771 MonoBehaviour: m_ObjectHideFlags: 0 @@ -503,6 +523,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!23 &627535773 MeshRenderer: @@ -515,10 +536,12 @@ MeshRenderer: 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: @@ -543,6 +566,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &627535774 MeshFilter: m_ObjectHideFlags: 0 @@ -561,6 +585,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1, y: 0, z: -3} m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 8 @@ -586,7 +611,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &766214508 MonoBehaviour: m_ObjectHideFlags: 0 @@ -605,6 +630,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!114 &766214509 MonoBehaviour: @@ -620,6 +646,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 9b8a70de-04bb-47fe-94a8-046a5c40e621 + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &766214510 MonoBehaviour: m_ObjectHideFlags: 0 @@ -650,10 +679,12 @@ MeshRenderer: 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: @@ -678,6 +709,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &766214512 MeshFilter: m_ObjectHideFlags: 0 @@ -696,6 +728,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1, y: 0, z: 2} m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 3 @@ -789,6 +822,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &845829382 @@ -801,6 +835,7 @@ Transform: m_LocalRotation: {x: 0.85522455, y: -0.12030997, z: 0.22915669, w: 0.44900298} m_LocalPosition: {x: 0.16, y: 3, z: 0.09} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 @@ -826,7 +861,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &889393502 MonoBehaviour: m_ObjectHideFlags: 0 @@ -841,6 +876,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 4e7f3dcf-e925-473a-89e2-dfe6cfe7eac5 + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &889393503 MonoBehaviour: m_ObjectHideFlags: 0 @@ -878,6 +916,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!65 &889393505 BoxCollider: @@ -903,10 +942,12 @@ MeshRenderer: 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: @@ -931,6 +972,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &889393507 MeshFilter: m_ObjectHideFlags: 0 @@ -947,8 +989,9 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 889393501} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.6295098, y: 0.42811045, z: 0.014560541} + m_LocalPosition: {x: -2.62049, y: 0.42811045, z: -5.2354393} m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 7 @@ -960,77 +1003,67 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_RootOrder value: 5 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalPosition.y value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalPosition.z value: 1 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.w value: 0.7071068 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.x value: -0.7071068 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: -7511558181221131132, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -7511558181221131132, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_Materials.Array.data[1] value: objectReference: {fileID: 2100000, guid: ffe869305f90b3d0e9e796e7cb9252a3, type: 2} - - target: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_Name - value: box (1) + value: uninit + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} + propertyPath: m_IsActive + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} --- !u!1 &927649071 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} m_PrefabInstance: {fileID: 927649070} m_PrefabAsset: {fileID: 0} --- !u!114 &927649072 @@ -1066,6 +1099,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 6a4694fe-7ce0-46c7-b8d6-b00d437921b8 + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &927649074 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1084,6 +1120,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!65 &927649075 BoxCollider: @@ -1177,6 +1214,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -1188,77 +1226,67 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalPosition.z value: 2 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.w value: 0.7071068 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.x value: -0.7071068 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -8679921383154817045, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: -7511558181221131132, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: -7511558181221131132, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_Materials.Array.data[1] value: objectReference: {fileID: 2100000, guid: 63a2fe448fc86feb9899254cb6aaf170, type: 2} - - target: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + - target: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} propertyPath: m_Name value: box objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} --- !u!1 &2026983553 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, - type: 3} + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 1887c87d4830c871ba9ff30ccdd9970a, type: 3} m_PrefabInstance: {fileID: 2026983552} m_PrefabAsset: {fileID: 0} --- !u!114 &2026983554 @@ -1279,6 +1307,7 @@ MonoBehaviour: maximumGrabDistance: 0 snappingReferences: [] autoHold: 0 + updateWithPhysics: 1 ikReference: {fileID: 0} --- !u!114 &2026983555 MonoBehaviour: @@ -1294,6 +1323,9 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 2c06cf0a-e489-4d15-8618-1fb31712a09d + randomNum: + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 --- !u!114 &2026983556 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1326,3 +1358,159 @@ BoxCollider: serializedVersion: 2 m_Size: {x: 0.39999998, y: 0.4, z: 0.4} m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &2046637839 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2046637843} + - component: {fileID: 2046637842} + - component: {fileID: 2046637841} + - component: {fileID: 2046637840} + - component: {fileID: 2046637846} + - component: {fileID: 2046637845} + - component: {fileID: 2046637844} + m_Layer: 0 + m_Name: Quine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &2046637840 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046637839} + 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 &2046637841 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046637839} + 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: 8ca30503feb131693a50258ba008b3d0, 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 &2046637842 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046637839} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2046637843 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + 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_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!114 &2046637844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046637839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 990f6f4efb7f4ec98ad99f6dff1bc6f6, type: 3} + m_Name: + m_EditorClassIdentifier: + type: 3 + objectId: 9fee86b2-a9bd-46a3-a364-5f94506c4253 + randomNum: 95403234 + unityVersion: 2021.3.41f1 + cckVersion: 3.10:132 +--- !u!114 &2046637845 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046637839} + 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 &2046637846 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046637839} + 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} diff --git a/Assets/test/quine.shader b/Assets/test/quine.shader new file mode 100644 index 0000000..74f4d32 --- /dev/null +++ b/Assets/test/quine.shader @@ -0,0 +1,120 @@ +Shader "CrispyPin/Quine" +{ + Properties {} + SubShader { + Tags { "RenderType" = "Opaque" } + LOD 100 + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + #define ROWS 105 + #define COLS ROWS*2 + + struct appdata { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + float3 bg(uint charx, uint chary) { + return ((charx + chary) & 1) * 0.03 + 0.03; + } + + float3 frag (v2f i) : SV_Target { + // write as 'const uint text[] = {?};' before export + const uint text[] = {0x33484144,0x45520002,0x23524953,0x50593049,0x4e0f3155,0x494e4502,0x5f5b5f60,0x30524f50,0x45525449,0x4553005b,0x5d5f6033,0x55423348,0x41444552,0x005b5f60,0x60344147,0x53005b00,0x0232454e,0x44455234,0x59504502,0x001d0002,0x2f504151,0x55450200,0x5d5f6060,0x2c2f2400,0x1110105f,0x60603041,0x5353005b,0x5f606060,0x23273032,0x2f273221,0x2d5f6060,0x60035052,0x41474d41,0x00564552,0x54455800,0x56455254,0x5f606060,0x03505241,0x474d4100,0x46524147,0x4d454e54,0x00465241,0x475f5f60,0x60600349,0x4e434c55,0x44450002,0x354e4954,0x5923270e,0x4347494e,0x43025f5f,0x60606003,0x44454649,0x4e450032,0x2f373300,0x1110155f,0x60606003,0x44454649,0x4e450023,0x2f2c3300,0x322f3733,0x0a125f5f,0x60606053,0x54525543,0x54004150,0x50444154,0x41005b5f,0x60606060,0x464c4f41,0x54140056,0x45525445,0x58001a00,0x302f3329,0x34292f2e,0x1b5f6060,0x6060464c,0x4f415412,0x00555600,0x1a003425,0x38232f2f,0x3224101b,0x5f606060,0x60352e29,0x34393f36,0x25323425,0x383f292e,0x3035343f,0x292e3334,0x212e2325,0x3f29245f,0x6060605d,0x1b5f5f60,0x60605354,0x52554354,0x00561246,0x005b5f60,0x60606046,0x4c4f4154,0x12005556,0x001a0034,0x2538232f,0x2f322410,0x1b5f6060,0x6060464c,0x4f415414,0x00564552,0x54455800,0x1a003336,0x3f302f33,0x2934292f,0x2e1b5f60,0x60606035,0x2e293439,0x3f362532,0x3425383f,0x2f353430,0x35343f33,0x34253225,0x2f5f6060,0x605d1b5f,0x5f606060,0x56124600,0x56455254,0x00084150,0x50444154,0x41005609,0x005b5f60,0x60606056,0x1246004f,0x1b5f6060,0x6060352e,0x2934393f,0x33253435,0x303f292e,0x3334212e,0x23253f29,0x24085609,0x1b5f6060,0x6060352e,0x2934393f,0x292e2934,0x29212c29,0x3a253f2f,0x35343035,0x34085612,0x460c004f,0x091b5f60,0x60606035,0x2e293439,0x3f292e29,0x3429212c,0x293a253f,0x36253234,0x25383f2f,0x35343035,0x343f3334,0x2532252f,0x084f091b,0x5f606060,0x604f0e56,0x45525445,0x58001d00,0x354e4954,0x592f424a,0x45435434,0x4f234c49,0x50304f53,0x08560e56,0x45525445,0x58091b5f,0x60606060,0x4f0e5556,0x001d0056,0x0e55561b,0x5f606060,0x60524554,0x55524e00,0x4f1b5f60,0x60605d5f,0x5f606060,0x464c4f41,0x54130042,0x47085549,0x4e540043,0x48415258,0x0c005549,0x4e540043,0x48415259,0x09005b5f,0x60606060,0x52455455,0x524e0008,0x08434841,0x5258000b,0x00434841,0x52590900,0x06001109,0x000a0010,0x0e101300,0x0b00100e,0x10131b5f,0x6060605d,0x5f5f6060,0x60464c4f,0x41541300,0x46524147,0x00085612,0x46004909,0x001a0033,0x363f3441,0x52474554,0x005b5f60,0x6060600f,0x0f005752,0x49544500,0x41530007,0x434f4e53,0x54005549,0x4e540054,0x4558543b,0x3d001d00,0x5b1f5d1b,0x07004245,0x464f5245,0x00455850,0x4f52545f,0x60606060,0x434f4e53,0x54005549,0x4e540054,0x4558543b,0x3d001d00,0x5b1f5d1b,0x5f606060,0x60434f4e,0x53540055,0x494e5400,0x54455854,0x3f4c454e,0x001d0011,0x1412181b,0x5f606060,0x60434f4e,0x53540055,0x494e5400,0x424c4f42,0x3f535441,0x5254001d,0x00181312,0x1b5f5f60,0x60606043,0x4f4e5354,0x0055494e,0x5400464f,0x4e543f41,0x3b14183d,0x3b143d00,0x1d005b5b,0x100c100c,0x100c105d,0x0c5b100c,0x14101216,0x15191315,0x120c1110,0x11101517,0x11121818,0x0c161210,0x145d0c5b,0x100c100c,0x16101319,0x17191717,0x160c1617,0x11101818,0x165d0c5b,0x100c1911,0x14131016,0x1611140c,0x19111413,0x10161611,0x140c1514,0x5d0c5b14,0x10141212,0x16101418,0x0c111611,0x16191915,0x1113140c,0x11111214,0x12181610,0x14180c14,0x10141214,0x12101119,0x5d0c5b10,0x0c121011,0x17141512,0x14190c11,0x11131015,0x17131814,0x180c105d,0x0c5b100c,0x18151819,0x19131511,0x180c1910,0x17181312,0x1819110c,0x17121212,0x5d0c5b10,0x0c100c11,0x10101616,0x13121916,0x0c171819,0x1511165d,0x0c5b100c,0x12101211,0x11191211,0x160c1210,0x12111116,0x1110180c,0x11121311,0x125d0c5b,0x100c1810,0x18141518,0x1215120c,0x18101814,0x16141413,0x120c1310,0x19165d0c,0x5b100c11,0x10111313,0x11171613,0x120c1617,0x10101218,0x170c105d,0x0c5b100c,0x14101412,0x12161014,0x180c1115,0x17191113,0x140c105d,0x0c5b1210,0x11131216,0x1519120c,0x11151719,0x1013120c,0x100c105d,0x0c5b100c,0x100c1112,0x170c105d,0x0c5b100c,0x16111618,0x0c100c10,0x5d0c5b10,0x0c121011,0x17121015,0x17170c11,0x10181010,0x14151519,0x120c105d,0x0c5b100c,0x11161617,0x14141613,0x10100c11,0x16161714,0x15191914,0x170c1712,0x12125d0c,0x5b100c14,0x10141213,0x12131118,0x0c151014,0x18191515,0x11120c16,0x1117125d,0x0c5b100c,0x11101018,0x18151317,0x150c1116,0x11131716,0x14161210,0x0c111519,0x17115d0c,0x5b100c11,0x16111619,0x12191519,0x180c1116,0x11161911,0x19161418,0x0c111519,0x17115d0c,0x5b100c18,0x10181416,0x14151014,0x0c111011,0x10111815,0x1018170c,0x11121314,0x145d0c5b,0x100c1116,0x11161912,0x19151918,0x0c151015,0x14141418,0x100c1312,0x1511155d,0x0c5b100c,0x11161617,0x14151718,0x15140c15,0x10151414,0x1418130c,0x17111714,0x5d0c5b10,0x0c121012,0x11111611,0x10180c11,0x16111619,0x11161510,0x140c1312,0x1611115d,0x0c5b100c,0x11161617,0x14151718,0x15140c11,0x16161714,0x14181411,0x190c1115,0x1917115d,0x0c5b100c,0x11161116,0x19111615,0x11100c11,0x16161714,0x16141810,0x100c1115,0x1917115d,0x0c5b100c,0x11151719,0x1010180c,0x14101412,0x12161014,0x180c105d,0x0c5b100c,0x11151719,0x1012100c,0x14101412,0x12161014,0x180c105d,0x0c5b100c,0x12101219,0x11111814,0x100c1810,0x16181812,0x1311100c,0x19165d0c,0x5b100c12,0x11111319,0x12191211,0x160c1812,0x15171513,0x160c105d,0x0c5b100c,0x18101618,0x18121311,0x100c1210,0x12191111,0x1814100c,0x165d0c5b,0x100c1410,0x12161519,0x1315120c,0x11161614,0x10191612,0x18100c11,0x15191711,0x5d0c5b10,0x0c121016,0x17141615,0x1012120c,0x11161617,0x14161410,0x15190c16,0x125d0c5b,0x100c1116,0x16171415,0x17181911,0x0c191112,0x14181311,0x19190c12,0x1017165d,0x0c5b100c,0x11171117,0x19181618,0x17190c11,0x17111719,0x17161617,0x180c1116,0x1213105d,0x0c5b100c,0x15141714,0x18171312,0x0c111112,0x14121710,0x1815110c,0x11151416,0x125d0c5b,0x100c1117,0x11171917,0x14151519,0x0c111711,0x17191816,0x1911180c,0x17191910,0x5d0c5b10,0x0c111015,0x12171710,0x15150c11,0x11171518,0x15141611,0x140c1312,0x1611145d,0x0c5b100c,0x11101110,0x15181016,0x130c1111,0x17151815,0x14161114,0x0c131216,0x11145d0c,0x5b100c11,0x16161714,0x15181615,0x120c1111,0x12141217,0x10191711,0x0c111514,0x16125d0c,0x5b100c11,0x16161714,0x15171819,0x110c1116,0x16171416,0x15101519,0x0c121514,0x14135d0c,0x5b100c14,0x10141213,0x12121512,0x0c141014,0x12131212,0x11160c11,0x15131814,0x5d0c5b10,0x0c181518,0x19191314,0x13180c18,0x10181416,0x14141312,0x0c131017,0x16185d0c,0x5b100c19,0x11121618,0x10151511,0x0c111711,0x14181212,0x1618160c,0x12161417,0x105d0c5b,0x100c1110,0x15121717,0x1015150c,0x11101110,0x15181015,0x140c1318,0x14165d0c,0x5b100c11,0x16161714,0x15171819,0x110c1211,0x13191015,0x16191915,0x0c121514,0x16135d0c,0x5b100c11,0x16161714,0x15171819,0x110c1118,0x17101612,0x15161511,0x0c121514,0x14175d0c,0x5b100c11,0x16161714,0x15171815,0x140c1116,0x16171415,0x17181911,0x0c111519,0x17115d0c,0x5d1b5f60,0x60606043,0x4f4e5354,0x0055494e,0x5400464f,0x4e543f42,0x3b14193d,0x3b143d00,0x1d005b5b,0x100c1110,0x11101518,0x1016130c,0x11171117,0x19171615,0x18120c11,0x16121310,0x5d0c5b18,0x11121614,0x16141010,0x0c111616,0x17191818,0x1218160c,0x11161617,0x14151718,0x19110c11,0x15191711,0x5d0c5b10,0x0c111711,0x17191816,0x1911190c,0x11171117,0x19171616,0x13100c11,0x16121310,0x5d0c5b10,0x0c111611,0x17111216,0x1210160c,0x11161611,0x13141418,0x11160c11,0x15191711,0x5d0c5b10,0x0c141014,0x12131212,0x15120c11,0x15111115,0x12181417,0x120c1312,0x1318125d,0x0c5b100c,0x11161617,0x14151718,0x15140c11,0x16161714,0x15171819,0x110c1215,0x1414135d,0x0c5b100c,0x11161614,0x14191015,0x10140c11,0x16161714,0x15171819,0x110c1215,0x1414135d,0x0c5b100c,0x11181013,0x15111517,0x10120c11,0x16161714,0x15191914,0x170c1215,0x1414135d,0x0c5b100c,0x11101413,0x17151117,0x17190c19,0x11101014,0x10101912,0x0c121514,0x14135d0c,0x5b100c14,0x10141213,0x12121512,0x0c111711,0x17191716,0x1018180c,0x12161211,0x145d0c5b,0x100c1110,0x15101719,0x1617190c,0x11161310,0x15141118,0x13160c13,0x12161111,0x5d0c5b10,0x0c121012,0x11111611,0x15160c12,0x10121111,0x16111018,0x0c111513,0x17125d0c,0x5b100c19,0x14161818,0x18171618,0x0c151017,0x19141011,0x120c115d,0x0c5b100c,0x18101814,0x16141414,0x140c1810,0x18141614,0x1413120c,0x11151410,0x185d0c5b,0x100c100c,0x100c1113,0x16101616,0x1615195d,0x0c5b1116,0x17111116,0x18100c10,0x0c100c10,0x5d0c5b10,0x0c100c10,0x0c121012,0x11111911,0x16185d0c,0x5b100c18,0x15181919,0x13151118,0x0c111917,0x18141310,0x0c105d0c,0x5b100c11,0x17111719,0x18161817,0x180c1110,0x12161413,0x1310120c,0x11171918,0x5d0c5b10,0x0c151015,0x15131616,0x120c1410,0x18181517,0x190c105d,0x0c5b100c,0x18151819,0x19131511,0x180c1810,0x19121512,0x1410130c,0x11141318,0x145d0c5b,0x100c1510,0x15151316,0x16120c14,0x10181817,0x10130c10,0x5d0c5b10,0x0c111011,0x10151810,0x16130c16,0x13171913,0x11121710,0x0c171212,0x125d0c5b,0x18101816,0x15161318,0x140c1815,0x18191913,0x1417100c,0x17121212,0x1016170c,0x105d0c5b,0x100c1117,0x11171918,0x16191119,0x0c111014,0x12131015,0x10120c11,0x1719185d,0x0c5b100c,0x14101412,0x13121215,0x120c1118,0x14111117,0x160c1611,0x16185d0c,0x5b111711,0x17191716,0x1016140c,0x11161116,0x19121818,0x16140c17,0x13161417,0x10140c12,0x14161712,0x5d0c5b10,0x0c151016,0x18181116,0x13190c11,0x10171316,0x11181212,0x0c111719,0x185d0c5b,0x100c1410,0x14121312,0x1215120c,0x14101412,0x13121211,0x160c1711,0x19125d0c,0x5b100c11,0x18101212,0x10111915,0x150c1316,0x13171019,0x190c105d,0x0c5b100c,0x11171117,0x19181619,0x11180c13,0x18191218,0x13180c10,0x5d0c5b10,0x0c111616,0x17141517,0x1815140c,0x14101818,0x1617150c,0x105d0c5b,0x11101110,0x16101315,0x120c1117,0x11171918,0x16181718,0x0c131819,0x12181318,0x0c105d0c,0x5b181018,0x14181218,0x11160c18,0x15181919,0x13141710,0x0c171212,0x12101617,0x0c105d0c,0x5b100c11,0x10111015,0x18101613,0x0c131819,0x14181816,0x0c105d0c,0x5b100c14,0x17121913,0x13111812,0x0c141018,0x18151812,0x0c105d0c,0x5b100c12,0x10121114,0x10171218,0x0c121015,0x14151814,0x14140c12,0x1016105d,0x0c5b100c,0x18151819,0x19131511,0x180c1313,0x15151414,0x130c105d,0x0c5b100c,0x11171117,0x19171610,0x18180c16,0x17111018,0x18160c10,0x5d0c5b10,0x0c111810,0x12121017,0x1013100c,0x16151113,0x1511150c,0x105d0c5b,0x100c1417,0x11161110,0x1917190c,0x16151011,0x1911160c,0x105d0c5b,0x11161113,0x17161614,0x10100c11,0x16161714,0x15171911,0x180c1615,0x11131510,0x170c105d,0x0c5b100c,0x12101117,0x14151217,0x190c1813,0x13161115,0x120c105d,0x0c5b100c,0x14101412,0x13121310,0x140c1410,0x14121219,0x1615160c,0x12181619,0x165d0c5b,0x100c1410,0x14121312,0x1211160c,0x14101412,0x12161017,0x120c1611,0x16185d0c,0x5b100c14,0x10141213,0x12121016,0x0c141014,0x12151417,0x14140c13,0x1610185d,0x0c5b100c,0x100c100c,0x12181211,0x195d0c5b,0x12111311,0x11101016,0x17120c11,0x16111711,0x19121517,0x150c1116,0x11161912,0x18181614,0x0c19165d,0x0c5b1110,0x17131714,0x11181214,0x0c121113,0x16141912,0x1019160c,0x11101718,0x14181310,0x17110c16,0x145d0c5d,0x1b5f5f60,0x60606046,0x4c4f4154,0x00505800,0x1d00490e,0x55560e58,0x000a0023,0x2f2c331b,0x5f606060,0x60464c4f,0x41540050,0x59001d00,0x490e5556,0x0e59000a,0x00322f37,0x331b5f60,0x60606055,0x494e5400,0x43484152,0x58001d00,0x50581b5f,0x60606060,0x55494e54,0x00434841,0x5259001d,0x0050591b,0x5f5f6060,0x60605549,0x4e540043,0x4841523f,0x494e4445,0x58001d00,0x08434841,0x5258000b,0x0008322f,0x3733000d,0x11000d00,0x43484152,0x5909000a,0x00232f2c,0x33091b5f,0x60606060,0x55494e54,0x00434841,0x52001d00,0x141b5f60,0x60606046,0x4c4f4154,0x1300434f,0x4c4f5200,0x1d00464c,0x4f415413,0x08110c11,0x0c11091b,0x5f606060,0x60494600,0x08434841,0x523f494e,0x44455800,0x1c00424c,0x4f423f53,0x54415254,0x09005b5f,0x60606060,0x6055494e,0x54005445,0x58543f49,0x4e444558,0x001d0043,0x4841523f,0x494e4445,0x581e1e12,0x1b5f6060,0x60606043,0x48415200,0x1d005445,0x58543b54,0x4558543f,0x494e4445,0x583d1b5f,0x60606060,0x6055494e,0x54004259,0x54453f49,0x4e444558,0x001d0008,0x43484152,0x3f494e44,0x45580006,0x0013091b,0x5f606060,0x60604946,0x00084259,0x54453f49,0x4e444558,0x001d1d00,0x1009005b,0x00434841,0x52001e1e,0x1d001214,0x1b5d5f60,0x60606060,0x454c5345,0x00494600,0x08425954,0x453f494e,0x44455800,0x1d1d0011,0x09005b00,0x43484152,0x001e1e1d,0x0011161b,0x5d5f6060,0x60606045,0x4c534500,0x49460008,0x42595445,0x3f494e44,0x4558001d,0x1d001209,0x005b0043,0x48415200,0x1e1e1d00,0x181b5d5f,0x60606060,0x5d5f6060,0x6060454c,0x53450049,0x46000843,0x4841523f,0x494e4445,0x58001c00,0x08424c4f,0x423f5354,0x41525400,0x0b005445,0x58543f4c,0x454e000a,0x00111109,0x09005b5f,0x60606060,0x6055494e,0x5400424c,0x4f423f49,0x4e444558,0x001d0043,0x4841523f,0x494e4445,0x58000d00,0x424c4f42,0x3f535441,0x52541b5f,0x60606060,0x6055494e,0x54004e55,0x4d424552,0x3f494e44,0x4558001d,0x0008424c,0x4f423f49,0x4e444558,0x090f1111,0x1b5f6060,0x60606055,0x494e5400,0x44494749,0x543f4f46,0x46534554,0x001d0008,0x424c4f42,0x3f494e44,0x45580905,0x11111b5f,0x60606060,0x60494600,0x08444947,0x49543f4f,0x46465345,0x54001d1d,0x00100900,0x5b5f6060,0x60606060,0x43484152,0x001d0011,0x161b000f,0x0f000710,0x075f6060,0x60606060,0x434f4c4f,0x52001d00,0x464c4f41,0x54130811,0x0c100e15,0x0c10091b,0x5f606060,0x60605d00,0x454c5345,0x00494600,0x08444947,0x49543f4f,0x46465345,0x54001d1d,0x00110900,0x5b5f6060,0x60606060,0x43484152,0x001d0018,0x181b000f,0x0f000758,0x075f6060,0x60606060,0x434f4c4f,0x52001d00,0x464c4f41,0x54130811,0x0c100e15,0x0c10091b,0x5f606060,0x60605d00,0x454c5345,0x00494600,0x08444947,0x49543f4f,0x46465345,0x54001d1d,0x00111009,0x005b5f60,0x60606060,0x60434841,0x52001d00,0x11121b00,0x0f0f0007,0x0c075f60,0x60606060,0x5d00454c,0x5345005b,0x5f606060,0x60606055,0x494e5400,0x4e554d42,0x4552001d,0x00544558,0x543b4e55,0x4d424552,0x3f494e44,0x45583d1b,0x5f606060,0x60606055,0x494e5400,0x4e494242,0x4c453f4f,0x46465345,0x54001d00,0x08080844,0x49474954,0x3f4f4646,0x53455400,0x0d001209,0x00060017,0x09091b5f,0x60606060,0x60605549,0x4e54004e,0x4942424c,0x45001d00,0x4e554d42,0x4552001e,0x1e000808,0x17000d00,0x4e494242,0x4c453f4f,0x46465345,0x5409000a,0x00140900,0x06001058,0x461b5f60,0x60606060,0x60434f4e,0x53540055,0x494e5400,0x4845583f,0x43484152,0x533b1116,0x3d001d00,0x5b11160c,0x0011170c,0x0011180c,0x0011190c,0x0012100c,0x0012110c,0x0012120c,0x0012130c,0x0012140c,0x0012150c,0x0016150c,0x0016160c,0x0016170c,0x0016180c,0x0016190c,0x0017105d,0x1b5f6060,0x60606060,0x43484152,0x001d0048,0x45583f43,0x48415253,0x3b4e4942,0x424c453d,0x1b5f6060,0x60606060,0x434f4c4f,0x52001d00,0x464c4f41,0x54130810,0x0c110c11,0x091b5f60,0x60606060,0x5d5f6060,0x60605d00,0x454c5345,0x005b5f60,0x60606060,0x43484152,0x3f494e44,0x4558000d,0x1d005445,0x58543f4c,0x454e000a,0x00111100,0x0d00111b,0x5f606060,0x60605549,0x4e540054,0x4558543f,0x494e4445,0x58001d00,0x43484152,0x3f494e44,0x45581e1e,0x121b5f60,0x60606060,0x49460008,0x54455854,0x3f494e44,0x4558001e,0x00544558,0x543f4c45,0x4e09005b,0x00524554,0x55524e00,0x42470843,0x48415258,0x0c004348,0x41525909,0x1b005d5f,0x60606060,0x60434841,0x52001d00,0x54455854,0x3b544558,0x543f494e,0x4445583d,0x1b5f6060,0x60606055,0x494e5400,0x42595445,0x3f494e44,0x4558001d,0x00084348,0x41523f49,0x4e444558,0x00060013,0x091b5f60,0x60606060,0x49460008,0x42595445,0x3f494e44,0x4558001d,0x1d001009,0x005b0043,0x48415200,0x1e1e1d00,0x12141b5d,0x5f606060,0x6060454c,0x53450049,0x46000842,0x5954453f,0x494e4445,0x58001d1d,0x00110900,0x5b004348,0x4152001e,0x1e1d0011,0x161b5d5f,0x60606060,0x60454c53,0x45004946,0x00084259,0x54453f49,0x4e444558,0x001d1d00,0x1209005b,0x00434841,0x52001e1e,0x1d00181b,0x5d5f6060,0x60605d5f,0x5f606060,0x60434841,0x5200061d,0x00105846,0x461b5f60,0x60606055,0x494e5400,0x5458001d,0x00085058,0x000d0043,0x48415258,0x090a181b,0x5f606060,0x6055494e,0x54005459,0x001d0008,0x5059000d,0x00434841,0x5259090a,0x11161b5f,0x5f606060,0x6055494e,0x54005345,0x4354494f,0x4e3f494e,0x44455800,0x1d005459,0x1e1e121b,0x5f606060,0x6055494e,0x54004f46,0x46534554,0x001d0054,0x58000b00,0x08085459,0x00060013,0x091c1c13,0x091b5f60,0x60606046,0x4c4f4154,0x00504958,0x454c001d,0x00101b5f,0x60606060,0x49460008,0x43484152,0x001c0014,0x18095b5f,0x60606060,0x60504958,0x454c001d,0x0008464f,0x4e543f41,0x3b434841,0x523d3b53,0x45435449,0x4f4e3f49,0x4e444558,0x3d001e1e,0x004f4646,0x53455409,0x00060011,0x1b5f6060,0x60605d00,0x454c5345,0x005b5f60,0x60606060,0x50495845,0x4c001d00,0x08464f4e,0x543f423b,0x43484152,0x0d14183d,0x3b534543,0x54494f4e,0x3f494e44,0x45583d00,0x1e1e004f,0x46465345,0x54090006,0x00111b5f,0x60606060,0x5d5f6060,0x60604946,0x00085049,0x58454c09,0x005b5f60,0x60606060,0x52455455,0x524e0043,0x4f4c4f52,0x1b5f6060,0x60605d00,0x454c5345,0x005b5f60,0x60606060,0x52455455,0x524e0042,0x47084348,0x4152580c,0x00434841,0x5259091b,0x5f606060,0x605d5f60,0x60605d5f,0x60606025,0x2e242327,0x5f60605d,0x5f605d5f,}; + const uint text_len = 1469; + const uint blob_start = 925; + + const uint font_a[48][4] = {{0,0,0,0},{0,402659352,1010571288,6204},{0,0,603979776,6710886},{0,914306614,914306614,54},{404226048,1616995134,1124286048,404242019},{0,201745249,1130573848,0},{0,858993518,907832891,7222},{0,0,100663296,789516},{0,202119216,202116108,12312},{0,808458252,808464432,3096},{0,1013317632,6700287,0},{0,404226048,1579134,0},{201326592,1579032,0,0},{0,0,127,0},{0,6168,0,0},{0,201720577,1080045592,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,1579008,404226048,0},{0,1579020,404226048,0},{0,202911840,806882310,96},{0,2113929216,8257536,0},{0,806882310,202911840,6},{0,402659352,1664096280,15971},{0,2067465022,1667464059,62},{0,1667457891,912483199,2076},{0,1717986879,1717976678,16230},{0,54748732,1124270851,15462},{0,1717974559,1717986918,7990},{0,105277055,1175854614,32614},{0,101058063,1175854614,32614},{0,1667458652,1124270971,15462},{0,1667457891,1667465059,25443},{0,404232252,404232216,15384},{0,858993438,808464432,30768},{0,912680551,1714822686,26470},{0,105277055,101058054,3846},{0,1667457891,2139056995,25463},{0,1667457891,1870625651,25447},{0,1667457854,1667457891,15971},}; + const uint font_b[49][4] = {{0,101058063,1717976582,16230},{812646400,1667988286,1667457891,15971},{0,1717986919,1717976630,16230},{0,1617126206,1661344816,15971},{0,404232252,1511528472,32382},{0,1667457854,1667457891,25443},{0,1664490504,1667457891,25443},{0,1803515702,1667459947,25443},{0,1043751779,910040092,25443},{0,404232252,1717976088,26214},{0,105079679,1630541836,32611},{0,202116156,202116108,15372},{0,946888768,50794012,1},{0,808464444,808464432,15408},{0,0,0,136066659},{16711680,0,0,0},{0,0,0,202119168},{0,858993518,1978430,0},{0,1717986878,102643302,1798},{0,50553662,4088579,0},{0,858993518,809252403,14384},{0,50553662,4088703,0},{0,101058063,637931270,7222},{808656384,858993470,7222067,0},{0,1717986919,104230502,1798},{0,404232252,1841176,6168},{1717976064,1616928864,7364704,24672},{0,506881639,107361822,1798},{0,404232252,404232216,7192},{0,1802201955,3637099,0},{0,1717986918,3892838,0},{0,1667457854,4088675,0},{101060352,1717986878,3892838,0},{808482816,858993470,7222067,0},{0,101058063,3894886,0},{0,472933182,4088582,0},{0,202140728,205458444,2060},{0,858993518,3355443,0},{0,1717976088,6710886,0},{0,1802207030,6513515,0},{0,471610979,6501916,0},{1613766400,1667457918,6513507,0},{0,201745279,8336152,0},{0,404232304,404229656,28696},{0,404232216,404226072,6168},{0,404232206,404254744,3608},{0,0,0,28219},{2131100672,1617192575,1616928864,96},{1073741824,2136492096,1078483071,64},}; + + float px = i.uv.x * COLS; + float py = i.uv.y * ROWS; + uint charx = px; + uint chary = py; + + uint char_index = (charx + (ROWS -1 - chary) * COLS); + uint char = 4; + float3 color = float3(1,1,1); + if (char_index < blob_start) { + uint text_index = char_index>>2; + char = text[text_index]; + uint byte_index = (char_index & 3); + if (byte_index == 0) { char >>= 24;} + else if (byte_index == 1) { char >>= 16;} + else if (byte_index == 2) { char >>= 8;} + } + else if (char_index < (blob_start + text_len * 11)) { + uint blob_index = char_index - blob_start; + uint number_index = (blob_index)/11; + uint digit_offset = (blob_index)%11; + if (digit_offset == 0) { + char = 16; // '0' + color = float3(1,0.5,0); + } else if (digit_offset == 1) { + char = 88; // 'x' + color = float3(1,0.5,0); + } else if (digit_offset == 10) { + char = 12; // ',' + } else { + uint number = text[number_index]; + uint nibble_offset = (((digit_offset - 2) & 7)); + uint nibble = number >> ((7 - nibble_offset) * 4) & 0xf; + const uint hex_chars[16] = {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 65, 66, 67, 68, 69, 70}; + char = hex_chars[nibble]; + color = float3(0,1,1); + } + } else { + char_index -= text_len * 11 - 1; + uint text_index = char_index>>2; + if (text_index > text_len) { return bg(charx, chary); } + char = text[text_index]; + uint byte_index = (char_index & 3); + if (byte_index == 0) { char >>= 24;} + else if (byte_index == 1) { char >>= 16;} + else if (byte_index == 2) { char >>= 8;} + } + + char &= 0xff; + uint tx = (px - charx)*8; + uint ty = (py - chary)*16; + + uint section_index = ty>>2; + uint offset = tx + ((ty & 3)<<3); + float pixel = 0; + if (char < 48){ + pixel = (font_a[char][section_index] >> offset) & 1; + } else { + pixel = (font_b[char-48][section_index] >> offset) & 1; + } + if (pixel) { + return color; + } else { + return bg(charx, chary); + } + } + ENDCG + } + } +} diff --git a/Assets/test/quine.shader.meta b/Assets/test/quine.shader.meta new file mode 100644 index 0000000..465729b --- /dev/null +++ b/Assets/test/quine.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 06b6120c7bdd1fac69ccd01f15f08d36 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index d252266..57d2e92 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -9,10 +9,10 @@ EditorUserSettings: value: 5452010404540f5f0f0b5e7415250d12404e4d7f757d2732287b4a6bb2b13569 flags: 0 RecentlyUsedSceneGuid-1: - value: 5b545552530c5f030c08552111705b474f15497f2e2d77327e284967bab5606e + value: 5a050c0250565f5a58585d7244700c1245154e292d7970687d7c1f6be1e1656b flags: 0 RecentlyUsedSceneGuid-2: - value: 5a050c0250565f5a58585d7244700c1245154e292d7970687d7c1f6be1e1656b + value: 5b545552530c5f030c08552111705b474f15497f2e2d77327e284967bab5606e flags: 0 vcSharedLogLevel: value: 0d5e400f0650 diff --git a/text_shader/.gitignore b/text_shader/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/text_shader/.gitignore @@ -0,0 +1 @@ +/target diff --git a/text_shader/Cargo.lock b/text_shader/Cargo.lock new file mode 100644 index 0000000..81a489e --- /dev/null +++ b/text_shader/Cargo.lock @@ -0,0 +1,124 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bytemuck" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "image" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", + "png", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "text_shader" +version = "0.1.0" +dependencies = [ + "image", +] diff --git a/text_shader/Cargo.toml b/text_shader/Cargo.toml new file mode 100644 index 0000000..6a46444 --- /dev/null +++ b/text_shader/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "text_shader" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +image = { version = "0.25.2", default-features = false, features = ["png"] } diff --git a/text_shader/out.h b/text_shader/out.h new file mode 100644 index 0000000..21d43a1 --- /dev/null +++ b/text_shader/out.h @@ -0,0 +1,6 @@ + const uint text[] = {0x33484144,0x45520002,0x23524953,0x50593049,0x4e0f3155,0x494e4502,0x5f5b5f60,0x30524f50,0x45525449,0x4553005b,0x5d5f6033,0x55423348,0x41444552,0x005b5f60,0x60344147,0x53005b00,0x0232454e,0x44455234,0x59504502,0x001d0002,0x2f504151,0x55450200,0x5d5f6060,0x2c2f2400,0x1110105f,0x60603041,0x5353005b,0x5f606060,0x23273032,0x2f273221,0x2d5f6060,0x60035052,0x41474d41,0x00564552,0x54455800,0x56455254,0x5f606060,0x03505241,0x474d4100,0x46524147,0x4d454e54,0x00465241,0x475f5f60,0x60600349,0x4e434c55,0x44450002,0x354e4954,0x5923270e,0x4347494e,0x43025f5f,0x60606003,0x44454649,0x4e450032,0x2f373300,0x1110155f,0x60606003,0x44454649,0x4e450023,0x2f2c3300,0x322f3733,0x0a125f5f,0x60606053,0x54525543,0x54004150,0x50444154,0x41005b5f,0x60606060,0x464c4f41,0x54140056,0x45525445,0x58001a00,0x302f3329,0x34292f2e,0x1b5f6060,0x6060464c,0x4f415412,0x00555600,0x1a003425,0x38232f2f,0x3224101b,0x5f606060,0x60352e29,0x34393f36,0x25323425,0x383f292e,0x3035343f,0x292e3334,0x212e2325,0x3f29245f,0x6060605d,0x1b5f5f60,0x60605354,0x52554354,0x00561246,0x005b5f60,0x60606046,0x4c4f4154,0x12005556,0x001a0034,0x2538232f,0x2f322410,0x1b5f6060,0x6060464c,0x4f415414,0x00564552,0x54455800,0x1a003336,0x3f302f33,0x2934292f,0x2e1b5f60,0x60606035,0x2e293439,0x3f362532,0x3425383f,0x2f353430,0x35343f33,0x34253225,0x2f5f6060,0x605d1b5f,0x5f606060,0x56124600,0x56455254,0x00084150,0x50444154,0x41005609,0x005b5f60,0x60606056,0x1246004f,0x1b5f6060,0x6060352e,0x2934393f,0x33253435,0x303f292e,0x3334212e,0x23253f29,0x24085609,0x1b5f6060,0x6060352e,0x2934393f,0x292e2934,0x29212c29,0x3a253f2f,0x35343035,0x34085612,0x460c004f,0x091b5f60,0x60606035,0x2e293439,0x3f292e29,0x3429212c,0x293a253f,0x36253234,0x25383f2f,0x35343035,0x343f3334,0x2532252f,0x084f091b,0x5f606060,0x604f0e56,0x45525445,0x58001d00,0x354e4954,0x592f424a,0x45435434,0x4f234c49,0x50304f53,0x08560e56,0x45525445,0x58091b5f,0x60606060,0x4f0e5556,0x001d0056,0x0e55561b,0x5f606060,0x60524554,0x55524e00,0x4f1b5f60,0x60605d5f,0x5f606060,0x464c4f41,0x54130042,0x47085549,0x4e540043,0x48415258,0x0c005549,0x4e540043,0x48415259,0x09005b5f,0x60606060,0x52455455,0x524e0008,0x08434841,0x5258000b,0x00434841,0x52590900,0x06001109,0x000a0010,0x0e101300,0x0b00100e,0x10131b5f,0x6060605d,0x5f5f6060,0x60464c4f,0x41541300,0x46524147,0x00085612,0x46004909,0x001a0033,0x363f3441,0x52474554,0x005b5f60,0x6060600f,0x0f005752,0x49544500,0x41530007,0x434f4e53,0x54005549,0x4e540054,0x4558543b,0x3d001d00,0x5b1f5d1b,0x07004245,0x464f5245,0x00455850,0x4f52545f,0x60606060,0x434f4e53,0x54005549,0x4e540054,0x4558543b,0x3d001d00,0x5b1f5d1b,0x5f606060,0x60434f4e,0x53540055,0x494e5400,0x54455854,0x3f4c454e,0x001d0011,0x1412181b,0x5f606060,0x60434f4e,0x53540055,0x494e5400,0x424c4f42,0x3f535441,0x5254001d,0x00181312,0x1b5f5f60,0x60606043,0x4f4e5354,0x0055494e,0x5400464f,0x4e543f41,0x3b14183d,0x3b143d00,0x1d005b5b,0x100c100c,0x100c105d,0x0c5b100c,0x14101216,0x15191315,0x120c1110,0x11101517,0x11121818,0x0c161210,0x145d0c5b,0x100c100c,0x16101319,0x17191717,0x160c1617,0x11101818,0x165d0c5b,0x100c1911,0x14131016,0x1611140c,0x19111413,0x10161611,0x140c1514,0x5d0c5b14,0x10141212,0x16101418,0x0c111611,0x16191915,0x1113140c,0x11111214,0x12181610,0x14180c14,0x10141214,0x12101119,0x5d0c5b10,0x0c121011,0x17141512,0x14190c11,0x11131015,0x17131814,0x180c105d,0x0c5b100c,0x18151819,0x19131511,0x180c1910,0x17181312,0x1819110c,0x17121212,0x5d0c5b10,0x0c100c11,0x10101616,0x13121916,0x0c171819,0x1511165d,0x0c5b100c,0x12101211,0x11191211,0x160c1210,0x12111116,0x1110180c,0x11121311,0x125d0c5b,0x100c1810,0x18141518,0x1215120c,0x18101814,0x16141413,0x120c1310,0x19165d0c,0x5b100c11,0x10111313,0x11171613,0x120c1617,0x10101218,0x170c105d,0x0c5b100c,0x14101412,0x12161014,0x180c1115,0x17191113,0x140c105d,0x0c5b1210,0x11131216,0x1519120c,0x11151719,0x1013120c,0x100c105d,0x0c5b100c,0x100c1112,0x170c105d,0x0c5b100c,0x16111618,0x0c100c10,0x5d0c5b10,0x0c121011,0x17121015,0x17170c11,0x10181010,0x14151519,0x120c105d,0x0c5b100c,0x11161617,0x14141613,0x10100c11,0x16161714,0x15191914,0x170c1712,0x12125d0c,0x5b100c14,0x10141213,0x12131118,0x0c151014,0x18191515,0x11120c16,0x1117125d,0x0c5b100c,0x11101018,0x18151317,0x150c1116,0x11131716,0x14161210,0x0c111519,0x17115d0c,0x5b100c11,0x16111619,0x12191519,0x180c1116,0x11161911,0x19161418,0x0c111519,0x17115d0c,0x5b100c18,0x10181416,0x14151014,0x0c111011,0x10111815,0x1018170c,0x11121314,0x145d0c5b,0x100c1116,0x11161912,0x19151918,0x0c151015,0x14141418,0x100c1312,0x1511155d,0x0c5b100c,0x11161617,0x14151718,0x15140c15,0x10151414,0x1418130c,0x17111714,0x5d0c5b10,0x0c121012,0x11111611,0x10180c11,0x16111619,0x11161510,0x140c1312,0x1611115d,0x0c5b100c,0x11161617,0x14151718,0x15140c11,0x16161714,0x14181411,0x190c1115,0x1917115d,0x0c5b100c,0x11161116,0x19111615,0x11100c11,0x16161714,0x16141810,0x100c1115,0x1917115d,0x0c5b100c,0x11151719,0x1010180c,0x14101412,0x12161014,0x180c105d,0x0c5b100c,0x11151719,0x1012100c,0x14101412,0x12161014,0x180c105d,0x0c5b100c,0x12101219,0x11111814,0x100c1810,0x16181812,0x1311100c,0x19165d0c,0x5b100c12,0x11111319,0x12191211,0x160c1812,0x15171513,0x160c105d,0x0c5b100c,0x18101618,0x18121311,0x100c1210,0x12191111,0x1814100c,0x165d0c5b,0x100c1410,0x12161519,0x1315120c,0x11161614,0x10191612,0x18100c11,0x15191711,0x5d0c5b10,0x0c121016,0x17141615,0x1012120c,0x11161617,0x14161410,0x15190c16,0x125d0c5b,0x100c1116,0x16171415,0x17181911,0x0c191112,0x14181311,0x19190c12,0x1017165d,0x0c5b100c,0x11171117,0x19181618,0x17190c11,0x17111719,0x17161617,0x180c1116,0x1213105d,0x0c5b100c,0x15141714,0x18171312,0x0c111112,0x14121710,0x1815110c,0x11151416,0x125d0c5b,0x100c1117,0x11171917,0x14151519,0x0c111711,0x17191816,0x1911180c,0x17191910,0x5d0c5b10,0x0c111015,0x12171710,0x15150c11,0x11171518,0x15141611,0x140c1312,0x1611145d,0x0c5b100c,0x11101110,0x15181016,0x130c1111,0x17151815,0x14161114,0x0c131216,0x11145d0c,0x5b100c11,0x16161714,0x15181615,0x120c1111,0x12141217,0x10191711,0x0c111514,0x16125d0c,0x5b100c11,0x16161714,0x15171819,0x110c1116,0x16171416,0x15101519,0x0c121514,0x14135d0c,0x5b100c14,0x10141213,0x12121512,0x0c141014,0x12131212,0x11160c11,0x15131814,0x5d0c5b10,0x0c181518,0x19191314,0x13180c18,0x10181416,0x14141312,0x0c131017,0x16185d0c,0x5b100c19,0x11121618,0x10151511,0x0c111711,0x14181212,0x1618160c,0x12161417,0x105d0c5b,0x100c1110,0x15121717,0x1015150c,0x11101110,0x15181015,0x140c1318,0x14165d0c,0x5b100c11,0x16161714,0x15171819,0x110c1211,0x13191015,0x16191915,0x0c121514,0x16135d0c,0x5b100c11,0x16161714,0x15171819,0x110c1118,0x17101612,0x15161511,0x0c121514,0x14175d0c,0x5b100c11,0x16161714,0x15171815,0x140c1116,0x16171415,0x17181911,0x0c111519,0x17115d0c,0x5d1b5f60,0x60606043,0x4f4e5354,0x0055494e,0x5400464f,0x4e543f42,0x3b14193d,0x3b143d00,0x1d005b5b,0x100c1110,0x11101518,0x1016130c,0x11171117,0x19171615,0x18120c11,0x16121310,0x5d0c5b18,0x11121614,0x16141010,0x0c111616,0x17191818,0x1218160c,0x11161617,0x14151718,0x19110c11,0x15191711,0x5d0c5b10,0x0c111711,0x17191816,0x1911190c,0x11171117,0x19171616,0x13100c11,0x16121310,0x5d0c5b10,0x0c111611,0x17111216,0x1210160c,0x11161611,0x13141418,0x11160c11,0x15191711,0x5d0c5b10,0x0c141014,0x12131212,0x15120c11,0x15111115,0x12181417,0x120c1312,0x1318125d,0x0c5b100c,0x11161617,0x14151718,0x15140c11,0x16161714,0x15171819,0x110c1215,0x1414135d,0x0c5b100c,0x11161614,0x14191015,0x10140c11,0x16161714,0x15171819,0x110c1215,0x1414135d,0x0c5b100c,0x11181013,0x15111517,0x10120c11,0x16161714,0x15191914,0x170c1215,0x1414135d,0x0c5b100c,0x11101413,0x17151117,0x17190c19,0x11101014,0x10101912,0x0c121514,0x14135d0c,0x5b100c14,0x10141213,0x12121512,0x0c111711,0x17191716,0x1018180c,0x12161211,0x145d0c5b,0x100c1110,0x15101719,0x1617190c,0x11161310,0x15141118,0x13160c13,0x12161111,0x5d0c5b10,0x0c121012,0x11111611,0x15160c12,0x10121111,0x16111018,0x0c111513,0x17125d0c,0x5b100c19,0x14161818,0x18171618,0x0c151017,0x19141011,0x120c115d,0x0c5b100c,0x18101814,0x16141414,0x140c1810,0x18141614,0x1413120c,0x11151410,0x185d0c5b,0x100c100c,0x100c1113,0x16101616,0x1615195d,0x0c5b1116,0x17111116,0x18100c10,0x0c100c10,0x5d0c5b10,0x0c100c10,0x0c121012,0x11111911,0x16185d0c,0x5b100c18,0x15181919,0x13151118,0x0c111917,0x18141310,0x0c105d0c,0x5b100c11,0x17111719,0x18161817,0x180c1110,0x12161413,0x1310120c,0x11171918,0x5d0c5b10,0x0c151015,0x15131616,0x120c1410,0x18181517,0x190c105d,0x0c5b100c,0x18151819,0x19131511,0x180c1810,0x19121512,0x1410130c,0x11141318,0x145d0c5b,0x100c1510,0x15151316,0x16120c14,0x10181817,0x10130c10,0x5d0c5b10,0x0c111011,0x10151810,0x16130c16,0x13171913,0x11121710,0x0c171212,0x125d0c5b,0x18101816,0x15161318,0x140c1815,0x18191913,0x1417100c,0x17121212,0x1016170c,0x105d0c5b,0x100c1117,0x11171918,0x16191119,0x0c111014,0x12131015,0x10120c11,0x1719185d,0x0c5b100c,0x14101412,0x13121215,0x120c1118,0x14111117,0x160c1611,0x16185d0c,0x5b111711,0x17191716,0x1016140c,0x11161116,0x19121818,0x16140c17,0x13161417,0x10140c12,0x14161712,0x5d0c5b10,0x0c151016,0x18181116,0x13190c11,0x10171316,0x11181212,0x0c111719,0x185d0c5b,0x100c1410,0x14121312,0x1215120c,0x14101412,0x13121211,0x160c1711,0x19125d0c,0x5b100c11,0x18101212,0x10111915,0x150c1316,0x13171019,0x190c105d,0x0c5b100c,0x11171117,0x19181619,0x11180c13,0x18191218,0x13180c10,0x5d0c5b10,0x0c111616,0x17141517,0x1815140c,0x14101818,0x1617150c,0x105d0c5b,0x11101110,0x16101315,0x120c1117,0x11171918,0x16181718,0x0c131819,0x12181318,0x0c105d0c,0x5b181018,0x14181218,0x11160c18,0x15181919,0x13141710,0x0c171212,0x12101617,0x0c105d0c,0x5b100c11,0x10111015,0x18101613,0x0c131819,0x14181816,0x0c105d0c,0x5b100c14,0x17121913,0x13111812,0x0c141018,0x18151812,0x0c105d0c,0x5b100c12,0x10121114,0x10171218,0x0c121015,0x14151814,0x14140c12,0x1016105d,0x0c5b100c,0x18151819,0x19131511,0x180c1313,0x15151414,0x130c105d,0x0c5b100c,0x11171117,0x19171610,0x18180c16,0x17111018,0x18160c10,0x5d0c5b10,0x0c111810,0x12121017,0x1013100c,0x16151113,0x1511150c,0x105d0c5b,0x100c1417,0x11161110,0x1917190c,0x16151011,0x1911160c,0x105d0c5b,0x11161113,0x17161614,0x10100c11,0x16161714,0x15171911,0x180c1615,0x11131510,0x170c105d,0x0c5b100c,0x12101117,0x14151217,0x190c1813,0x13161115,0x120c105d,0x0c5b100c,0x14101412,0x13121310,0x140c1410,0x14121219,0x1615160c,0x12181619,0x165d0c5b,0x100c1410,0x14121312,0x1211160c,0x14101412,0x12161017,0x120c1611,0x16185d0c,0x5b100c14,0x10141213,0x12121016,0x0c141014,0x12151417,0x14140c13,0x1610185d,0x0c5b100c,0x100c100c,0x12181211,0x195d0c5b,0x12111311,0x11101016,0x17120c11,0x16111711,0x19121517,0x150c1116,0x11161912,0x18181614,0x0c19165d,0x0c5b1110,0x17131714,0x11181214,0x0c121113,0x16141912,0x1019160c,0x11101718,0x14181310,0x17110c16,0x145d0c5d,0x1b5f5f60,0x60606046,0x4c4f4154,0x00505800,0x1d00490e,0x55560e58,0x000a0023,0x2f2c331b,0x5f606060,0x60464c4f,0x41540050,0x59001d00,0x490e5556,0x0e59000a,0x00322f37,0x331b5f60,0x60606055,0x494e5400,0x43484152,0x58001d00,0x50581b5f,0x60606060,0x55494e54,0x00434841,0x5259001d,0x0050591b,0x5f5f6060,0x60605549,0x4e540043,0x4841523f,0x494e4445,0x58001d00,0x08434841,0x5258000b,0x0008322f,0x3733000d,0x11000d00,0x43484152,0x5909000a,0x00232f2c,0x33091b5f,0x60606060,0x55494e54,0x00434841,0x52001d00,0x141b5f60,0x60606046,0x4c4f4154,0x1300434f,0x4c4f5200,0x1d00464c,0x4f415413,0x08110c11,0x0c11091b,0x5f606060,0x60494600,0x08434841,0x523f494e,0x44455800,0x1c00424c,0x4f423f53,0x54415254,0x09005b5f,0x60606060,0x6055494e,0x54005445,0x58543f49,0x4e444558,0x001d0043,0x4841523f,0x494e4445,0x581e1e12,0x1b5f6060,0x60606043,0x48415200,0x1d005445,0x58543b54,0x4558543f,0x494e4445,0x583d1b5f,0x60606060,0x6055494e,0x54004259,0x54453f49,0x4e444558,0x001d0008,0x43484152,0x3f494e44,0x45580006,0x0013091b,0x5f606060,0x60604946,0x00084259,0x54453f49,0x4e444558,0x001d1d00,0x1009005b,0x00434841,0x52001e1e,0x1d001214,0x1b5d5f60,0x60606060,0x454c5345,0x00494600,0x08425954,0x453f494e,0x44455800,0x1d1d0011,0x09005b00,0x43484152,0x001e1e1d,0x0011161b,0x5d5f6060,0x60606045,0x4c534500,0x49460008,0x42595445,0x3f494e44,0x4558001d,0x1d001209,0x005b0043,0x48415200,0x1e1e1d00,0x181b5d5f,0x60606060,0x5d5f6060,0x6060454c,0x53450049,0x46000843,0x4841523f,0x494e4445,0x58001c00,0x08424c4f,0x423f5354,0x41525400,0x0b005445,0x58543f4c,0x454e000a,0x00111109,0x09005b5f,0x60606060,0x6055494e,0x5400424c,0x4f423f49,0x4e444558,0x001d0043,0x4841523f,0x494e4445,0x58000d00,0x424c4f42,0x3f535441,0x52541b5f,0x60606060,0x6055494e,0x54004e55,0x4d424552,0x3f494e44,0x4558001d,0x0008424c,0x4f423f49,0x4e444558,0x090f1111,0x1b5f6060,0x60606055,0x494e5400,0x44494749,0x543f4f46,0x46534554,0x001d0008,0x424c4f42,0x3f494e44,0x45580905,0x11111b5f,0x60606060,0x60494600,0x08444947,0x49543f4f,0x46465345,0x54001d1d,0x00100900,0x5b5f6060,0x60606060,0x43484152,0x001d0011,0x161b000f,0x0f000710,0x075f6060,0x60606060,0x434f4c4f,0x52001d00,0x464c4f41,0x54130811,0x0c100e15,0x0c10091b,0x5f606060,0x60605d00,0x454c5345,0x00494600,0x08444947,0x49543f4f,0x46465345,0x54001d1d,0x00110900,0x5b5f6060,0x60606060,0x43484152,0x001d0018,0x181b000f,0x0f000758,0x075f6060,0x60606060,0x434f4c4f,0x52001d00,0x464c4f41,0x54130811,0x0c100e15,0x0c10091b,0x5f606060,0x60605d00,0x454c5345,0x00494600,0x08444947,0x49543f4f,0x46465345,0x54001d1d,0x00111009,0x005b5f60,0x60606060,0x60434841,0x52001d00,0x11121b00,0x0f0f0007,0x0c075f60,0x60606060,0x5d00454c,0x5345005b,0x5f606060,0x60606055,0x494e5400,0x4e554d42,0x4552001d,0x00544558,0x543b4e55,0x4d424552,0x3f494e44,0x45583d1b,0x5f606060,0x60606055,0x494e5400,0x4e494242,0x4c453f4f,0x46465345,0x54001d00,0x08080844,0x49474954,0x3f4f4646,0x53455400,0x0d001209,0x00060017,0x09091b5f,0x60606060,0x60605549,0x4e54004e,0x4942424c,0x45001d00,0x4e554d42,0x4552001e,0x1e000808,0x17000d00,0x4e494242,0x4c453f4f,0x46465345,0x5409000a,0x00140900,0x06001058,0x461b5f60,0x60606060,0x60434f4e,0x53540055,0x494e5400,0x4845583f,0x43484152,0x533b1116,0x3d001d00,0x5b11160c,0x0011170c,0x0011180c,0x0011190c,0x0012100c,0x0012110c,0x0012120c,0x0012130c,0x0012140c,0x0012150c,0x0016150c,0x0016160c,0x0016170c,0x0016180c,0x0016190c,0x0017105d,0x1b5f6060,0x60606060,0x43484152,0x001d0048,0x45583f43,0x48415253,0x3b4e4942,0x424c453d,0x1b5f6060,0x60606060,0x434f4c4f,0x52001d00,0x464c4f41,0x54130810,0x0c110c11,0x091b5f60,0x60606060,0x5d5f6060,0x60605d00,0x454c5345,0x005b5f60,0x60606060,0x43484152,0x3f494e44,0x4558000d,0x1d005445,0x58543f4c,0x454e000a,0x00111100,0x0d00111b,0x5f606060,0x60605549,0x4e540054,0x4558543f,0x494e4445,0x58001d00,0x43484152,0x3f494e44,0x45581e1e,0x121b5f60,0x60606060,0x49460008,0x54455854,0x3f494e44,0x4558001e,0x00544558,0x543f4c45,0x4e09005b,0x00524554,0x55524e00,0x42470843,0x48415258,0x0c004348,0x41525909,0x1b005d5f,0x60606060,0x60434841,0x52001d00,0x54455854,0x3b544558,0x543f494e,0x4445583d,0x1b5f6060,0x60606055,0x494e5400,0x42595445,0x3f494e44,0x4558001d,0x00084348,0x41523f49,0x4e444558,0x00060013,0x091b5f60,0x60606060,0x49460008,0x42595445,0x3f494e44,0x4558001d,0x1d001009,0x005b0043,0x48415200,0x1e1e1d00,0x12141b5d,0x5f606060,0x6060454c,0x53450049,0x46000842,0x5954453f,0x494e4445,0x58001d1d,0x00110900,0x5b004348,0x4152001e,0x1e1d0011,0x161b5d5f,0x60606060,0x60454c53,0x45004946,0x00084259,0x54453f49,0x4e444558,0x001d1d00,0x1209005b,0x00434841,0x52001e1e,0x1d00181b,0x5d5f6060,0x60605d5f,0x5f606060,0x60434841,0x5200061d,0x00105846,0x461b5f60,0x60606055,0x494e5400,0x5458001d,0x00085058,0x000d0043,0x48415258,0x090a181b,0x5f606060,0x6055494e,0x54005459,0x001d0008,0x5059000d,0x00434841,0x5259090a,0x11161b5f,0x5f606060,0x6055494e,0x54005345,0x4354494f,0x4e3f494e,0x44455800,0x1d005459,0x1e1e121b,0x5f606060,0x6055494e,0x54004f46,0x46534554,0x001d0054,0x58000b00,0x08085459,0x00060013,0x091c1c13,0x091b5f60,0x60606046,0x4c4f4154,0x00504958,0x454c001d,0x00101b5f,0x60606060,0x49460008,0x43484152,0x001c0014,0x18095b5f,0x60606060,0x60504958,0x454c001d,0x0008464f,0x4e543f41,0x3b434841,0x523d3b53,0x45435449,0x4f4e3f49,0x4e444558,0x3d001e1e,0x004f4646,0x53455409,0x00060011,0x1b5f6060,0x60605d00,0x454c5345,0x005b5f60,0x60606060,0x50495845,0x4c001d00,0x08464f4e,0x543f423b,0x43484152,0x0d14183d,0x3b534543,0x54494f4e,0x3f494e44,0x45583d00,0x1e1e004f,0x46465345,0x54090006,0x00111b5f,0x60606060,0x5d5f6060,0x60604946,0x00085049,0x58454c09,0x005b5f60,0x60606060,0x52455455,0x524e0043,0x4f4c4f52,0x1b5f6060,0x60605d00,0x454c5345,0x005b5f60,0x60606060,0x52455455,0x524e0042,0x47084348,0x4152580c,0x00434841,0x5259091b,0x5f606060,0x605d5f60,0x60605d5f,0x60606025,0x2e242327,0x5f60605d,0x5f605d5f,}; + const uint text_len = 1469; + const uint blob_start = 925; + + const uint font_a[48][4] = {{0,0,0,0},{0,402659352,1010571288,6204},{0,0,603979776,6710886},{0,914306614,914306614,54},{404226048,1616995134,1124286048,404242019},{0,201745249,1130573848,0},{0,858993518,907832891,7222},{0,0,100663296,789516},{0,202119216,202116108,12312},{0,808458252,808464432,3096},{0,1013317632,6700287,0},{0,404226048,1579134,0},{201326592,1579032,0,0},{0,0,127,0},{0,6168,0,0},{0,201720577,1080045592,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,1579008,404226048,0},{0,1579020,404226048,0},{0,202911840,806882310,96},{0,2113929216,8257536,0},{0,806882310,202911840,6},{0,402659352,1664096280,15971},{0,2067465022,1667464059,62},{0,1667457891,912483199,2076},{0,1717986879,1717976678,16230},{0,54748732,1124270851,15462},{0,1717974559,1717986918,7990},{0,105277055,1175854614,32614},{0,101058063,1175854614,32614},{0,1667458652,1124270971,15462},{0,1667457891,1667465059,25443},{0,404232252,404232216,15384},{0,858993438,808464432,30768},{0,912680551,1714822686,26470},{0,105277055,101058054,3846},{0,1667457891,2139056995,25463},{0,1667457891,1870625651,25447},{0,1667457854,1667457891,15971},}; + const uint font_b[49][4] = {{0,101058063,1717976582,16230},{812646400,1667988286,1667457891,15971},{0,1717986919,1717976630,16230},{0,1617126206,1661344816,15971},{0,404232252,1511528472,32382},{0,1667457854,1667457891,25443},{0,1664490504,1667457891,25443},{0,1803515702,1667459947,25443},{0,1043751779,910040092,25443},{0,404232252,1717976088,26214},{0,105079679,1630541836,32611},{0,202116156,202116108,15372},{0,946888768,50794012,1},{0,808464444,808464432,15408},{0,0,0,136066659},{16711680,0,0,0},{0,0,0,202119168},{0,858993518,1978430,0},{0,1717986878,102643302,1798},{0,50553662,4088579,0},{0,858993518,809252403,14384},{0,50553662,4088703,0},{0,101058063,637931270,7222},{808656384,858993470,7222067,0},{0,1717986919,104230502,1798},{0,404232252,1841176,6168},{1717976064,1616928864,7364704,24672},{0,506881639,107361822,1798},{0,404232252,404232216,7192},{0,1802201955,3637099,0},{0,1717986918,3892838,0},{0,1667457854,4088675,0},{101060352,1717986878,3892838,0},{808482816,858993470,7222067,0},{0,101058063,3894886,0},{0,472933182,4088582,0},{0,202140728,205458444,2060},{0,858993518,3355443,0},{0,1717976088,6710886,0},{0,1802207030,6513515,0},{0,471610979,6501916,0},{1613766400,1667457918,6513507,0},{0,201745279,8336152,0},{0,404232304,404229656,28696},{0,404232216,404226072,6168},{0,404232206,404254744,3608},{0,0,0,28219},{2131100672,1617192575,1616928864,96},{1073741824,2136492096,1078483071,64},}; diff --git a/text_shader/src/main.rs b/text_shader/src/main.rs new file mode 100644 index 0000000..ebc5c11 --- /dev/null +++ b/text_shader/src/main.rs @@ -0,0 +1,79 @@ +use std::{ + fs::{read_to_string, File}, + io::Write, +}; + +use image::{GenericImageView, ImageReader}; + +const FULL_CHARSET: &[u8] = b" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\n\t"; + +fn main() { + const A:u8 = FULL_CHARSET[64]; + // source code conversion + let source_text = read_to_string("../Assets/test/quine.shader").unwrap(); + let mut encoded_text: Vec = Vec::new(); + let mut temp = 0; + let mut i = 0; + let mut blob_start = 0; + for (index, char) in source_text.chars().enumerate() { + if char == '?' { + blob_start = index; + } + + temp <<= 8; + let char_index = FULL_CHARSET + .iter() + .position(|&c| c == char as u8) + .unwrap_or_else(|| { + println!("char {char:?} not in charset"); + 0 + }); + temp |= (char_index as u32) & 0xff; + i += 1; + if i == 4 { + i = 0; + encoded_text.push(temp); + temp = 0; + } + } + let mut out_string = String::new(); + out_string += "\t\t\t\tconst uint text[] = {"; + for t in &encoded_text { + out_string += &format!("{t:#010x},"); + } + out_string += "};\n"; + out_string += &format!("\t\t\t\tconst uint text_len = {};\n", encoded_text.len()); + out_string += &format!("\t\t\t\tconst uint blob_start = {blob_start};\n"); + + // font + let img = ImageReader::open("vgafont.png").unwrap().decode().unwrap(); + let mut out = Vec::new(); + for &c in FULL_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 += "\n\t\t\t\tconst uint font_a[48][4] = {"; + for (i, c) in out.iter().enumerate() { + if i == 48 { + out_string += &format!("}};\n\t\t\t\tconst uint font_b[{}][4] = {{", out.len() - 48); + } + out_string += &format!("{{{},{},{},{}}},", c[0], c[1], c[2], c[3]); + } + out_string += "};\n"; + let mut file = File::create("out.h").unwrap(); + file.write_all(out_string.as_bytes()).unwrap(); +} diff --git a/text_shader/vgafont.png b/text_shader/vgafont.png new file mode 100644 index 0000000..c81b996 Binary files /dev/null and b/text_shader/vgafont.png differ