Quine shader!

This commit is contained in:
Crispy 2024-08-11 12:24:31 +02:00
parent 35ebc03b6f
commit fb2ee82f67
12 changed files with 694 additions and 69 deletions

80
Assets/test/Quine.mat Normal file
View file

@ -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: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8ca30503feb131693a50258ba008b3d0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -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}

120
Assets/test/quine.shader Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 06b6120c7bdd1fac69ccd01f15f08d36
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -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

1
text_shader/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

124
text_shader/Cargo.lock generated Normal file
View file

@ -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",
]

9
text_shader/Cargo.toml Normal file
View file

@ -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"] }

6
text_shader/out.h Normal file

File diff suppressed because one or more lines are too long

79
text_shader/src/main.rs Normal file
View file

@ -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<u32> = 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();
}

BIN
text_shader/vgafont.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB