add numberstand to downcount
25
Packages/com.z3y.vrcmarkerpro/LICENSE.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# License (VRCMarker Pro)
|
||||
|
||||
## Personal License
|
||||
|
||||
Under the **Personal License**, you are permitted to:
|
||||
|
||||
- Create modifications of the asset.
|
||||
- Upload the asset and its modifications to both personal public and private worlds.
|
||||
|
||||
However, the following actions are **prohibited**:
|
||||
|
||||
- Reselling the asset on its own.
|
||||
- Including the asset in any world package for sale or distribution.
|
||||
|
||||
## Commercial License
|
||||
|
||||
Under the **Commercial License**, you are permitted to:
|
||||
|
||||
- Include the asset in world packages for sale, provided that the total price of the world package is **higher than the original price of the asset**.
|
||||
- Upload the asset to other users' accounts.
|
||||
|
||||
The following restrictions apply:
|
||||
|
||||
- Redistribution of the asset by itself, either in its original form or as a modification, is strictly prohibited.
|
||||
- Any asset sold or transferred under this license retains the same rights and restrictions as a personal license for the recipient.
|
||||
1034
Packages/com.z3y.vrcmarkerpro/Marker Pro.prefab
Normal file
33
Packages/com.z3y.vrcmarkerpro/Runtime/Materials/Blit.mat
Normal file
@@ -0,0 +1,33 @@
|
||||
%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: Blit
|
||||
m_Shader: {fileID: 4800000, guid: 497a62d2fd9f0784faeda3d7ce4b734c, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats: []
|
||||
m_Colors: []
|
||||
m_BuildTextureStacks: []
|
||||
87
Packages/com.z3y.vrcmarkerpro/Runtime/Materials/Eraser.mat
Normal file
@@ -0,0 +1,87 @@
|
||||
%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: Eraser
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _ALPHABLEND_ON
|
||||
- _GLOSSYREFLECTIONS_OFF
|
||||
- _SPECULARHIGHLIGHTS_OFF
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 3000
|
||||
stringTagMap:
|
||||
RenderType: Transparent
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
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: 10
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _Mode: 2
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 0
|
||||
- _SrcBlend: 5
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 0.504717, b: 0.504717, a: 0.5019608}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
@@ -0,0 +1,85 @@
|
||||
%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: Mesh Material
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _DETAIL_MULX2
|
||||
- _METALLICGLOSSMAP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
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: 2800000, guid: 1dde9dea9fde00b4c84b54b9cbd7cf8c, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 2800000, guid: 2266ceb3ce4395b419aa77cb2ba8cda1, type: 3}
|
||||
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: 2800000, guid: 32ba2efc30114614398b365a61e911a2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 6f1eeed6c99a3354585fa506b71928ad, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 2800000, guid: 287695eb54e7d2f469656e5fb688b3d3, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 2800000, guid: 39ccbdb618321dd49a5480f989f85ce2, type: 3}
|
||||
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: 0.813
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 1
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0.3490566, g: 0.3490566, b: 0.3490566, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
83
Packages/com.z3y.vrcmarkerpro/Runtime/Materials/Reticle.mat
Normal file
@@ -0,0 +1,83 @@
|
||||
%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: Reticle
|
||||
m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
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: 0.16470589, g: 0.6666667, b: 0.7568628, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
42
Packages/com.z3y.vrcmarkerpro/Runtime/Materials/Trail.mat
Normal file
@@ -0,0 +1,42 @@
|
||||
%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: Trail
|
||||
m_Shader: {fileID: 4800000, guid: 00cf77937aeaa2148a9a67fb9f54a420, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 2450
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses:
|
||||
- ALWAYS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _PositionData:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _EnableLightVolumes: 0
|
||||
- _GradientLength: 2
|
||||
- _GradientPeriod: 256
|
||||
- _LightVolumesInfluence: 0.95
|
||||
- _Scale: 0.5
|
||||
- _StencilRef: 0
|
||||
- _SubdivideDistance: 3
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
95
Packages/com.z3y.vrcmarkerpro/Runtime/Mesh/Cube.prefab
Normal file
@@ -0,0 +1,95 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &6806962436988251533
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6882426716860169360}
|
||||
- component: {fileID: 326895451638130807}
|
||||
- component: {fileID: 3172620725429645201}
|
||||
- component: {fileID: 6659966616668039408}
|
||||
m_Layer: 0
|
||||
m_Name: Cube
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6882426716860169360
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6806962436988251533}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &326895451638130807
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6806962436988251533}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &3172620725429645201
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6806962436988251533}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 42da8200c1e447a40b5cc30ba1856dd6, 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
|
||||
--- !u!65 &6659966616668039408
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6806962436988251533}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
78
Packages/com.z3y.vrcmarkerpro/Runtime/Mesh/Debug.mat
Normal file
@@ -0,0 +1,78 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Debug
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: _ALPHAPREMULTIPLY_ON _GLOSSYREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 3000
|
||||
stringTagMap:
|
||||
RenderType: Transparent
|
||||
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_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 10
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _Mode: 3
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 0
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 0, b: 0, a: 0.36862746}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
@@ -0,0 +1,2 @@
|
||||
This mesh doesnt actually take up that much space in the build, its only about 300kb and speeds up initialization of the world, since the line renderer data can be pregenerated.
|
||||
Ideally this could be a static field but we cant have nice things in udon.
|
||||
167
Packages/com.z3y.vrcmarkerpro/Runtime/Mesh/VRCMarkerLut.mesh
Normal file
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Mesh/marker.fbx
Normal file
@@ -0,0 +1,39 @@
|
||||
%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: Hidden_VRCMarker Internal_Trail Renderer
|
||||
m_Shader: {fileID: 4800000, guid: 00cf77937aeaa2148a9a67fb9f54a420, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _PositionData:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _EnableLightVolumes: 0
|
||||
- _GradientPeriod: 256
|
||||
- _Scale: 0.5
|
||||
- _StencilRef: 0
|
||||
- _SubdivideDistance: 3
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
445
Packages/com.z3y.vrcmarkerpro/Runtime/Shaders/Blit.shader
Normal file
@@ -0,0 +1,445 @@
|
||||
Shader "Hidden/VRCMarker Internal/Blit"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_MainTex ("Texture", any) = "" {}
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderType"="Opaque" }
|
||||
Cull Off
|
||||
Lighting Off
|
||||
ZWrite Off
|
||||
ZTest Always
|
||||
|
||||
|
||||
CGINCLUDE
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
|
||||
#include "Line.cginc"
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
|
||||
|
||||
float3 _WritePosition;
|
||||
uint _WriteIndex;
|
||||
Texture2D<float4> _MainTex;
|
||||
SamplerState sampler_MainTex;
|
||||
float3 _ErasePosition;
|
||||
float _EraseDistance;
|
||||
|
||||
uint4 _WriteIndexRange;
|
||||
|
||||
float4 _WriteParams;
|
||||
|
||||
cbuffer WriteData
|
||||
{
|
||||
float _VRCMWritePositions[1023];
|
||||
}
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float2 uv : TEXCOORD0;
|
||||
float4 vertex : SV_POSITION;
|
||||
};
|
||||
|
||||
v2f vert (appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.uv;
|
||||
return o;
|
||||
}
|
||||
|
||||
ENDCG
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Write (0)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
float4 color = 0;
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
|
||||
uint index = CoordsToIndex(i.uv);
|
||||
|
||||
if (index == (_WriteIndex + 1) % COUNT)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if (index != _WriteIndex)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
color.xyz = _WritePosition;
|
||||
|
||||
if (index == LAST_INDEX)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// color.a = _Time.y + 0.5f;
|
||||
// if (all(color.xyz) == 0) color.a = 0;
|
||||
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Erase (1)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
// uint2 coords = uint2(i.uv.x * RESOLUTION.x, i.uv.y * RESOLUTION.y);
|
||||
// uint index = (coords.x * RESOLUTION.x) + (coords.y);
|
||||
|
||||
float4 rt = _MainTex.SampleLevel(sampler_MainTex, i.uv, 0);
|
||||
float3 position = rt.xyz;
|
||||
// float3 position = _MainTex[IndexToCoords(index)].xyz;
|
||||
float4 color = rt;
|
||||
|
||||
if (distance(_ErasePosition, position) < _EraseDistance)
|
||||
{
|
||||
color = 0;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Copy (2)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
float4 color = _MainTex.SampleLevel(sampler_MainTex, i.uv, 0);
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Write Range (3)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
float4 color = 0;
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
uint index = CoordsToIndex(i.uv);
|
||||
|
||||
if (index == LAST_INDEX)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool timestamp = _WriteIndexRange.z;
|
||||
uint arrayIndex = (index * 3);
|
||||
uint start = _WriteIndexRange.x;
|
||||
uint count = _WriteIndexRange.y;
|
||||
uint end = start + count;
|
||||
uint startIndex = start / 3;
|
||||
uint endIndex = end / 3;
|
||||
|
||||
bool wrapAround = endIndex > COUNT;
|
||||
uint newLineCount = (count / 3) - (COUNT - startIndex);
|
||||
if (wrapAround && index <= newLineCount)
|
||||
{
|
||||
return 0;
|
||||
// index += endIndex - startIndex - 1;
|
||||
// arrayIndex = (index * 3);
|
||||
}
|
||||
|
||||
if (index < startIndex || index > endIndex)
|
||||
{
|
||||
discard;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (index == endIndex % COUNT)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
arrayIndex -= start;
|
||||
// arrayIndex = clamp(arrayIndex, 0, 1022);
|
||||
|
||||
|
||||
color.xyz = float3(_VRCMWritePositions[arrayIndex], _VRCMWritePositions[arrayIndex + 1], _VRCMWritePositions[arrayIndex + 2]);
|
||||
|
||||
if (timestamp && all(color.xyz) != 0)
|
||||
{
|
||||
float syncTimeOffset = _WriteParams.x;
|
||||
// float syncTimeOffset = 0;
|
||||
float count = abs(endIndex - startIndex);
|
||||
// float timeIncrement = 0.02f;
|
||||
float syncInterval = 1.0 / 3.0;
|
||||
float timeIncrement = ((syncInterval - syncTimeOffset) / count);
|
||||
color.a = _Time.y + (float(arrayIndex / 3) * timeIncrement) + syncTimeOffset;
|
||||
}
|
||||
|
||||
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Copy To RFloat (4)"
|
||||
CGPROGRAM
|
||||
float frag (v2f i) : SV_Target
|
||||
{
|
||||
float color = 0;
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
uint2 res = RESOLUTION * 2;
|
||||
uint index = CoordsToIndex(i.uv, res);
|
||||
|
||||
float3 position = _MainTex[IndexToCoords(index / 3)].xyz;
|
||||
|
||||
uint component = index % 3;
|
||||
color = position[component];
|
||||
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Copy To ZOrder Curve (5)"
|
||||
CGPROGRAM
|
||||
uint _CopyOffset;
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
float4 color = 0;
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
// i.uv.y = 1.0 - i.uv.y;z
|
||||
#endif
|
||||
|
||||
uint zIndex = UVToIndex(i.uv * RESOLUTION.x);
|
||||
|
||||
if (_CopyOffset > 0)
|
||||
{
|
||||
zIndex += _CopyOffset;
|
||||
zIndex %= (COUNT - 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
float3 position = _MainTex[IndexToCoords(zIndex)].xyz;
|
||||
|
||||
// color.a = _Time.y + 0.5f;
|
||||
// if (all(color.xyz) == 0) color.a = 0;
|
||||
|
||||
return float4(position, 0);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "GenerateActiveTexelMap (6)"
|
||||
CGPROGRAM
|
||||
float frag (v2f i) : SV_Target
|
||||
{
|
||||
float4 color = _MainTex.SampleLevel(sampler_MainTex, i.uv, 0);
|
||||
|
||||
uint zIndex = UVToIndex(i.uv * RESOLUTION.x);
|
||||
|
||||
float4 previousColor = _MainTex[IndexToUV(zIndex-1)];
|
||||
if (!all(color == 0))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else if (!all(previousColor == 0))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Defragment (7)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
|
||||
uint regularIndex = CoordsToIndex(i.uv);
|
||||
|
||||
int2 uv = ActiveTexelIndexToUV(regularIndex);
|
||||
if (uv.x == -1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return _MainTex[uv];
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Erase Range (8)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
|
||||
float4 rt = _MainTex.SampleLevel(sampler_MainTex, i.uv, 0);
|
||||
float3 position = rt.xyz;
|
||||
|
||||
float4 color = rt;
|
||||
uint count = _WriteIndexRange.y;
|
||||
|
||||
UNITY_LOOP
|
||||
for (uint index = 0; index < count; index += 3)
|
||||
{
|
||||
float3 erasePosition = float3(_VRCMWritePositions[index], _VRCMWritePositions[index + 1], _VRCMWritePositions[index + 2]);
|
||||
if (distance(erasePosition, position) < _EraseDistance)
|
||||
{
|
||||
color = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Count Active Texels (9)"
|
||||
CGPROGRAM
|
||||
float frag (v2f i) : SV_Target
|
||||
{
|
||||
float maxLod = round(log2(HEIGHT));
|
||||
int3 uv = int3(0, 0, maxLod);
|
||||
|
||||
float count = (float)(1 << (uv.z + uv.z)) * _MainTex.Load(uv);
|
||||
return count;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Clear Timestamps (10)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
|
||||
float4 color = _MainTex.SampleLevel(sampler_MainTex, i.uv, 0);
|
||||
return float4(color.xyz, 0);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Undo (11)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
|
||||
uint index = CoordsToIndex(i.uv);
|
||||
|
||||
bool shouldErase = false;
|
||||
for (uint j = index; j < index + 32; j ++)
|
||||
{
|
||||
float3 position = _MainTex[IndexToCoords(j)].xyz;
|
||||
if (j == _WriteIndex - 1 || j == _WriteIndex)
|
||||
{
|
||||
shouldErase = true;
|
||||
break;
|
||||
}
|
||||
if (all(position == 0))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!shouldErase)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "WriteZeroRange (12)"
|
||||
CGPROGRAM
|
||||
float4 frag (v2f i) : SV_Target
|
||||
{
|
||||
#ifdef UNITY_UV_STARTS_AT_TOP
|
||||
i.uv.y = 1.0 - i.uv.y;
|
||||
#endif
|
||||
|
||||
uint index = CoordsToIndex(i.uv);
|
||||
|
||||
float4 color = _MainTex.SampleLevel(sampler_MainTex, i.uv, 0);
|
||||
|
||||
uint start = _WriteIndexRange.x;
|
||||
uint end = _WriteIndexRange.y;
|
||||
|
||||
if (index >= start && index < end)
|
||||
{
|
||||
color = 0;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
Shader "Hidden/VRCMarker Internal/Debug Alpha"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_MainTex ("Texture", 2D) = "white" {}
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderType"="Opaque" }
|
||||
LOD 100
|
||||
|
||||
Pass
|
||||
{
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
// make fog work
|
||||
#pragma multi_compile_fog
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float2 uv : TEXCOORD0;
|
||||
UNITY_FOG_COORDS(1)
|
||||
float4 vertex : SV_POSITION;
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
float4 _MainTex_ST;
|
||||
|
||||
v2f vert (appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
|
||||
UNITY_TRANSFER_FOG(o,o.vertex);
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag (v2f i) : SV_Target
|
||||
{
|
||||
// sample the texture
|
||||
fixed4 col = tex2D(_MainTex, i.uv);
|
||||
// apply fog
|
||||
UNITY_APPLY_FOG(i.fogCoord, col);
|
||||
return saturate(col.a);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
138
Packages/com.z3y.vrcmarkerpro/Runtime/Shaders/Line.cginc
Normal file
@@ -0,0 +1,138 @@
|
||||
#define RESOLUTION uint2(256, 256)
|
||||
#define COUNT (RESOLUTION.x * RESOLUTION.y)
|
||||
#define LAST_INDEX (COUNT - 1)
|
||||
#define WIDTH RESOLUTION.x
|
||||
#define HEIGHT RESOLUTION.y
|
||||
#define Z_ORDER_CURVE
|
||||
|
||||
Texture2D<float> _ActiveTexelMap;
|
||||
float4 _ActiveTexelMap_TexelSize;
|
||||
|
||||
uint2 IndexToCoords(uint index)
|
||||
{
|
||||
return uint2(index % RESOLUTION.x, index / RESOLUTION.x);
|
||||
}
|
||||
|
||||
uint CoordsToIndex(float2 uv, uint2 res = RESOLUTION)
|
||||
{
|
||||
uint2 coords = uint2(uv.y * res.y, uv.x * res.x);
|
||||
uint index = (coords.x * res.x) + (coords.y);
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
// https://github.com/d4rkc0d3r/CompactSparseTextureDemo/
|
||||
|
||||
// adapted from: https://lemire.me/blog/2018/01/08/how-fast-can-you-bit-interleave-32-bit-integers/
|
||||
uint InterleaveWithZero(uint word)
|
||||
{
|
||||
word = (word ^ (word << 8)) & 0x00ff00ff;
|
||||
word = (word ^ (word << 4)) & 0x0f0f0f0f;
|
||||
word = (word ^ (word << 2)) & 0x33333333;
|
||||
word = (word ^ (word << 1)) & 0x55555555;
|
||||
return word;
|
||||
}
|
||||
|
||||
// adapted from: https://stackoverflow.com/questions/3137266/how-to-de-interleave-bits-unmortonizing
|
||||
uint DeinterleaveWithZero(uint word)
|
||||
{
|
||||
word &= 0x55555555;
|
||||
word = (word | (word >> 1)) & 0x33333333;
|
||||
word = (word | (word >> 2)) & 0x0f0f0f0f;
|
||||
word = (word | (word >> 4)) & 0x00ff00ff;
|
||||
word = (word | (word >> 8)) & 0x0000ffff;
|
||||
return word;
|
||||
}
|
||||
|
||||
uint2 IndexToUV(uint index)
|
||||
{
|
||||
#ifdef Z_ORDER_CURVE
|
||||
return uint2(DeinterleaveWithZero(index), DeinterleaveWithZero(index >> 1));
|
||||
#else
|
||||
return uint2(index % HEIGHT, index / HEIGHT);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint UVToIndex(uint2 uv)
|
||||
{
|
||||
#ifdef Z_ORDER_CURVE
|
||||
return InterleaveWithZero(uv.x) | (InterleaveWithZero(uv.y) << 1);
|
||||
#else
|
||||
return uv.x + uv.y * WIDTH;
|
||||
#endif
|
||||
}
|
||||
|
||||
float CountActiveTexels(int3 uv, int2 offset)
|
||||
{
|
||||
uv.xy += offset;
|
||||
return (float)(1 << (uv.z + uv.z)) * _ActiveTexelMap.Load(uv);
|
||||
}
|
||||
|
||||
float CountActiveTexels(int3 uv)
|
||||
{
|
||||
return CountActiveTexels(uv, int2(0, 0));
|
||||
}
|
||||
|
||||
int2 ActiveTexelIndexToUV(float index)
|
||||
{
|
||||
float maxLod = round(log2(HEIGHT));
|
||||
int3 uv = int3(0, 0, maxLod);
|
||||
|
||||
if (index >= CountActiveTexels(uv))
|
||||
return -1;
|
||||
float activeTexelSumInPreviousLods = 0;
|
||||
while (uv.z >= 1)
|
||||
{
|
||||
uv += int3(uv.xy, -1);
|
||||
float count00 = CountActiveTexels(uv);
|
||||
float count01 = CountActiveTexels(uv, int2(1, 0));
|
||||
float count10 = CountActiveTexels(uv, int2(0, 1));
|
||||
bool in00 = index < (activeTexelSumInPreviousLods + count00);
|
||||
bool in01 = index < (activeTexelSumInPreviousLods + count00 + count01);
|
||||
bool in10 = index < (activeTexelSumInPreviousLods + count00 + count01 + count10);
|
||||
if (in00)
|
||||
{
|
||||
uv.xy += int2(0, 0);
|
||||
}
|
||||
else if (in01)
|
||||
{
|
||||
uv.xy += int2(1, 0);
|
||||
activeTexelSumInPreviousLods += count00;
|
||||
}
|
||||
else if (in10)
|
||||
{
|
||||
uv.xy += int2(0, 1);
|
||||
activeTexelSumInPreviousLods += count00 + count01;
|
||||
}
|
||||
else
|
||||
{
|
||||
uv.xy += int2(1, 1);
|
||||
activeTexelSumInPreviousLods += count00 + count01 + count10;
|
||||
}
|
||||
}
|
||||
return uv.xy;
|
||||
}
|
||||
|
||||
/*
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 d4rkpl4y3r
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
832
Packages/com.z3y.vrcmarkerpro/Runtime/Shaders/Line.shader
Normal file
@@ -0,0 +1,832 @@
|
||||
Shader "Hidden/VRCMarker Internal/Line Renderer"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[HideInInspector]_Color ("Color", Color) = (1,1,1,1)
|
||||
[HideInInspector]_Scale ("Width", Range(0, 1)) = 0.5
|
||||
_GradientPeriod ("Gradient Period", Float) = 256
|
||||
|
||||
//[NoScaleOffset] _MainTex("Albedo (RGB)", 2D) = "white" {}
|
||||
////[NoScaleOffset] _MetallicGlossMap("Mask Map", 2D) = "white" {}
|
||||
//[NoScaleOffset] _ColorMask("Color Mask Map", 2D) = "white" {}
|
||||
//_Glossiness ("Smoothness", Range(0,1)) = 0.5
|
||||
//_GradientLength ("Gradient Length", Float) = 2
|
||||
[HideInInspector] _StencilRef ("", Float) = 0
|
||||
_PositionData ("Data", 2D) = "white" {}
|
||||
|
||||
_SubdivideDistance ("Subdivide Distance", Float) = 3
|
||||
[Toggle(_VRC_LIGHTVOLUMES)] _EnableLightVolumes ("VRC Light Volumes", Float) = 0
|
||||
_LightVolumesInfluence ("VRC Light Volume Influence", Range(0,1)) = 0.9
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
#ifdef SHADER_API_D3D11
|
||||
#define USE_GEOM
|
||||
#endif
|
||||
|
||||
#pragma multi_compile_instancing
|
||||
|
||||
#include "Line.cginc"
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
#pragma shader_feature_local_fragment _VRC_LIGHTVOLUMES
|
||||
#ifdef _VRC_LIGHTVOLUMES
|
||||
#include "Packages/red.sim.lightvolumes/Shaders/LightVolumes.cginc"
|
||||
|
||||
// fallback to 1.0
|
||||
void LV_SampleLightProbe_1(out float3 L0, out float3 L1r, out float3 L1g, out float3 L1b) {
|
||||
L0 = 1;
|
||||
L1r = 1.0/3.0;
|
||||
L1g = 1.0/3.0;
|
||||
L1b = 1.0/3.0;
|
||||
}
|
||||
#define LV_SampleLightProbe LV_SampleLightProbe_1
|
||||
#endif
|
||||
|
||||
half _LightVolumesInfluence;
|
||||
half3 _Color;
|
||||
half _OutlineValue;
|
||||
half _OutlineHue;
|
||||
|
||||
half _Scale;
|
||||
half _GradientPeriod;
|
||||
half4 _Gradient[8];
|
||||
uint _GradientLength;
|
||||
uint _VertexCount;
|
||||
float3 _LastPosition;
|
||||
|
||||
float _DummyZero;
|
||||
float _OutlineWidth;
|
||||
float _EraseDistance;
|
||||
float3 _EraserPosition;
|
||||
|
||||
float _SubdivideDistance;
|
||||
|
||||
Texture2D<float4> _PositionData;
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION; // not needed lol
|
||||
uint vertexID : SV_VertexID;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
#ifdef USE_GEOM
|
||||
struct v2g
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
uint vertexID : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct g2f
|
||||
#else
|
||||
struct v2f
|
||||
#endif
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv0 : TEXCOORD0;
|
||||
nointerpolation bool isLine : TEXCOORD1;
|
||||
half3 gradient : TEXCOORD2;
|
||||
float3 position : TEXCOORD3;
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
|
||||
float3 centerEyePos()
|
||||
{
|
||||
// trail tube looks more convincing in vr without this
|
||||
// #if defined(UNITY_STEREO_MULTIVIEW_ENABLED) || defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_SINGLE_PASS_STEREO)
|
||||
// return 0.5 * (unity_StereoWorldSpaceCameraPos[0] + unity_StereoWorldSpaceCameraPos[1]);
|
||||
// #else
|
||||
return _WorldSpaceCameraPos;
|
||||
// #endif
|
||||
}
|
||||
|
||||
// thanks error.mdl for help
|
||||
float3 billboardTriangle(float3 vertex, float3 triCenter)
|
||||
{
|
||||
vertex -= triCenter;
|
||||
float3 head = centerEyePos();
|
||||
float3 center2Head = head - triCenter;
|
||||
float c2hLen = length(center2Head);
|
||||
float c2hXZLen = length(center2Head.xz);
|
||||
|
||||
float sin1 = center2Head.y / c2hLen;
|
||||
float cos1 = c2hXZLen / c2hLen;
|
||||
float2x2 rot1 = float2x2(cos1, -sin1, -sin1, cos1);
|
||||
vertex.zy = mul(rot1, vertex.zy);
|
||||
|
||||
float sin2 = center2Head.x / c2hXZLen;
|
||||
float cos2 = center2Head.z / c2hXZLen;
|
||||
float2x2 rot2 = float2x2(cos2, sin2, -sin2, cos2);
|
||||
vertex.xz = mul(rot2, vertex.xz);
|
||||
|
||||
vertex += triCenter;
|
||||
return vertex;
|
||||
}
|
||||
|
||||
// vertices always set in this order, i hope
|
||||
static const float2 offsets[7] =
|
||||
{
|
||||
float2(0, 0),
|
||||
float2(0, 1),
|
||||
float2(1, 1),
|
||||
float2(1, 0),
|
||||
float2(-0.077350269189625764509148780501f, 0),
|
||||
float2(0.5f, 1),
|
||||
float2(1.077350269189625764509148780501f, 0)
|
||||
};
|
||||
|
||||
struct Gradient
|
||||
{
|
||||
int type;
|
||||
int colorsLength;
|
||||
half4 colors[8];
|
||||
};
|
||||
|
||||
Gradient NewGradient(int type, int colorsLength, half4 colors[8])
|
||||
{
|
||||
Gradient output =
|
||||
{
|
||||
type, colorsLength, colors
|
||||
};
|
||||
return output;
|
||||
}
|
||||
|
||||
half3 EvaluateGradient(Gradient gradient, half time)
|
||||
{
|
||||
half3 color = gradient.colors[0].rgb;
|
||||
[unroll(6)]
|
||||
for (int c = 1; c < gradient.colorsLength; c++)
|
||||
{
|
||||
half colorPos = saturate((time - gradient.colors[c - 1].w) / (gradient.colors[c].w - gradient.colors[c - 1].w)) * step(c, gradient.colorsLength - 1);
|
||||
color = lerp(color, gradient.colors[c].rgb, lerp(colorPos, step(0.01, colorPos), gradient.type));
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
half evaluateTime(uint id, half frequency)
|
||||
{
|
||||
half t = (sin((float)id / frequency) + 1.0) / 2.0;
|
||||
return t;
|
||||
}
|
||||
|
||||
#ifdef USE_GEOM
|
||||
v2g vert (appdata v)
|
||||
{
|
||||
v2g o;
|
||||
UNITY_INITIALIZE_OUTPUT(v2g, o);
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = v.vertex;
|
||||
o.vertexID = v.vertexID;
|
||||
return o;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
v2f vert(appdata v)
|
||||
{
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v); //Insert
|
||||
UNITY_INITIALIZE_OUTPUT(v2f, o); //Insert
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); //Insert
|
||||
|
||||
uint index = v.vertexID / 7;
|
||||
uint type = v.vertexID % 7;
|
||||
bool isLine = type <= 3;
|
||||
|
||||
// float3 originalPos = v.vertex.xyz;
|
||||
|
||||
//v.vertex.xyz = _PositionData[uint2(0, index)].xyz;
|
||||
float4 data0 = _PositionData[IndexToCoords(index)];
|
||||
float4 data1 = _PositionData[IndexToCoords(index - 1)];
|
||||
float3 start = data0.xyz;
|
||||
float3 end = data1.xyz;
|
||||
|
||||
float timestamp0 = data0.a;
|
||||
float timestamp1 = data1.a;
|
||||
float time = _Time.y;
|
||||
|
||||
bool shouldDiscard = false;
|
||||
|
||||
if (all(start.xyz == end.xyz))
|
||||
{
|
||||
start = 0;
|
||||
shouldDiscard = true;
|
||||
}
|
||||
|
||||
|
||||
if (timestamp0 > 0)
|
||||
{
|
||||
float increment = 0.02f;
|
||||
float timeScale = 1.0f / increment;
|
||||
|
||||
float nextTime = _PositionData[IndexToCoords(index + 1)].a;
|
||||
if (nextTime == 0) nextTime = timestamp1;
|
||||
float timeDistance = abs(timestamp0 - nextTime);
|
||||
// if (timeDistance == 0) timeDistance = 0.04;
|
||||
// if (timeDistance > 0.49) timeDistance = 0.02;
|
||||
|
||||
float timeOffset = _Time.y - timestamp0;
|
||||
float lerpTime = saturate(timeOffset / timeDistance);
|
||||
if (all(end == 0)) end = start;
|
||||
start = lerp(end, start, lerpTime);
|
||||
|
||||
if (timeOffset <= 0 || (_Time.y - timestamp1) <= 0)
|
||||
{
|
||||
shouldDiscard = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
UNITY_BRANCH
|
||||
if (shouldDiscard|| all(start.xyz == 0))
|
||||
{
|
||||
o.vertex = 0.0 / 0.0;
|
||||
// o.vertex = asfloat(-1);
|
||||
return o;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint gradientTime = type <= 1 ? data1.a : data0.a;
|
||||
|
||||
float3 vertexPos = start;
|
||||
float3 otherPos = end;
|
||||
o.position = vertexPos;
|
||||
|
||||
if (isLine && type <= 1)
|
||||
{
|
||||
otherPos = start;
|
||||
|
||||
if (all(end != 0 && start == 0) || all(end == 0 && start != 0))
|
||||
{
|
||||
vertexPos = start;
|
||||
}
|
||||
else
|
||||
{
|
||||
vertexPos = end;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
float2 offset = offsets[type];
|
||||
|
||||
#ifdef OUTLINE_PASS
|
||||
_Scale += _OutlineWidth;
|
||||
#endif
|
||||
|
||||
UNITY_BRANCH
|
||||
if (isLine)
|
||||
{
|
||||
gradientTime = data0.a;
|
||||
float3 v1 = otherPos - vertexPos;
|
||||
float3 v2 = centerEyePos() - vertexPos;
|
||||
float3 scaleDir = normalize(cross(v1, v2));
|
||||
scaleDir *= _Scale;
|
||||
|
||||
if (offset.x > 0) scaleDir = -scaleDir;
|
||||
// scaleDir *= offset.x * 2 - 1;
|
||||
|
||||
vertexPos += scaleDir * offset.y;
|
||||
vertexPos -= scaleDir * (1 - offset.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
float scaleFactor = 1.5;
|
||||
float2 triangleOffset = offset * 2 - 1;
|
||||
triangleOffset *= _Scale * scaleFactor;
|
||||
triangleOffset.y += _Scale * scaleFactor * UNITY_PI * 0.106;
|
||||
|
||||
float3 vertexOffset = float3(triangleOffset.x, triangleOffset.y, 0);
|
||||
float3 triangleVertex = float3(vertexPos.xy + triangleOffset, vertexPos.z);
|
||||
vertexPos = billboardTriangle(triangleVertex, vertexPos);
|
||||
}
|
||||
|
||||
o.vertex = mul(UNITY_MATRIX_VP, float4(vertexPos, 1.0));
|
||||
|
||||
|
||||
// o.vertex = UnityObjectToClipPos(float4(originalPos, 1));
|
||||
|
||||
o.uv0 = offset;
|
||||
o.isLine = isLine;
|
||||
|
||||
UNITY_BRANCH
|
||||
if (_GradientLength > 0)
|
||||
{
|
||||
// half t = evaluateTime((gradientTime * 7) + type , _GradientPeriod);
|
||||
half t = evaluateTime(v.vertexID, 256);
|
||||
Gradient g = NewGradient(0, _GradientLength, _Gradient);
|
||||
o.gradient = EvaluateGradient(g,t);
|
||||
}
|
||||
|
||||
return o;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
float3 CatmullRom(float3 p0, float3 p1, float3 p2, float3 p3, float t) {
|
||||
|
||||
float t2 = t * t;
|
||||
float t3 = t2 * t;
|
||||
|
||||
float3 p = 0.5 * (
|
||||
(2.0 * p1) +
|
||||
(-p0 + p2) * t +
|
||||
(2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3) * t2 +
|
||||
(-p0 + 3.0 * p1 - 3.0 * p2 + p3) * t3
|
||||
);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
#ifdef USE_GEOM
|
||||
[maxvertexcount(6)]
|
||||
void geom(triangle v2g IN[3], inout TriangleStream<g2f> triStream)
|
||||
{
|
||||
g2f o1 = (g2f)0;
|
||||
g2f o2[3] = { (g2f)0,(g2f)0,(g2f)0 };
|
||||
|
||||
#ifdef OUTLINE_PASS
|
||||
_Scale += _OutlineWidth;
|
||||
#endif
|
||||
|
||||
|
||||
bool shouldSubvidide = false;
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(IN[i]);
|
||||
|
||||
uint vertexID = IN[i].vertexID;
|
||||
uint index = vertexID / 7;
|
||||
uint type = vertexID % 7;
|
||||
bool isLine = type <= 3;
|
||||
|
||||
// float3 originalPos = v.vertex.xyz;
|
||||
|
||||
//v.vertex.xyz = _PositionData[uint2(0, index)].xyz;
|
||||
float4 data0 = _PositionData[IndexToCoords(index)];
|
||||
float4 data1 = _PositionData[IndexToCoords(index - 1)];
|
||||
float3 start = data0.xyz;
|
||||
float3 end = data1.xyz;
|
||||
// end = lerp(start.xyz, end.xyz, 0.5);
|
||||
|
||||
|
||||
float timestamp0 = data0.a;
|
||||
float timestamp1 = data1.a;
|
||||
float time = _Time.y;
|
||||
|
||||
bool shouldDiscard = false;
|
||||
|
||||
if (all(start.xyz == end.xyz))
|
||||
{
|
||||
start = 0;
|
||||
shouldDiscard = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (timestamp0 > 0)
|
||||
{
|
||||
float increment = 0.02f;
|
||||
float timeScale = 1.0f / increment;
|
||||
|
||||
float nextTime = _PositionData[IndexToCoords(index + 1)].a;
|
||||
if (nextTime == 0) nextTime = timestamp1;
|
||||
float timeDistance = abs(timestamp0 - nextTime);
|
||||
// if (timeDistance == 0) timeDistance = 0.04;
|
||||
// if (timeDistance > 0.49) timeDistance = 0.02;
|
||||
|
||||
float timeOffset = _Time.y - timestamp0;
|
||||
float lerpTime = saturate(timeOffset / timeDistance);
|
||||
if (all(end == 0)) end = start;
|
||||
start = lerp(end, start, lerpTime);
|
||||
|
||||
if (timeOffset <= 0 || (_Time.y - timestamp1) <= 0)
|
||||
{
|
||||
shouldDiscard = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
UNITY_BRANCH
|
||||
if (shouldDiscard|| all(start.xyz == 0))
|
||||
{
|
||||
// o.vertex = 0.0 / 0.0;
|
||||
// o.vertex = asfloat(-1);
|
||||
// triStream.RestartStrip();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
float3 subdivide = 0;
|
||||
if (!all(end.xyz == 0))
|
||||
{
|
||||
float distanceToCam = distance(end, centerEyePos());
|
||||
|
||||
UNITY_BRANCH
|
||||
if (distanceToCam < _SubdivideDistance)
|
||||
{
|
||||
float3 previousPoint = _PositionData[IndexToCoords(index-2)];
|
||||
float3 nextPoint = _PositionData[IndexToCoords(index+1)];
|
||||
|
||||
if (all(previousPoint == 0) || all(nextPoint.xyz == 0))
|
||||
{
|
||||
previousPoint = start;
|
||||
nextPoint = end;
|
||||
}
|
||||
|
||||
float tt = mad(sin(_Time.y), 0.5, 0.5);
|
||||
float d1 = distance(previousPoint, start);
|
||||
float d2 = distance(start, end);
|
||||
|
||||
float maxDistance = distance(start, end) * 3.0;
|
||||
if (distance(previousPoint, start) > maxDistance)
|
||||
{
|
||||
previousPoint = start;
|
||||
}
|
||||
if (distance(nextPoint, end) > maxDistance)
|
||||
{
|
||||
nextPoint = end;
|
||||
}
|
||||
|
||||
subdivide = CatmullRom(previousPoint, start, end, nextPoint, 0.5);
|
||||
subdivide = lerp((start + end) / 2.0, subdivide, saturate((_SubdivideDistance - distanceToCam) * 3.0));
|
||||
shouldSubvidide = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint gradientTime = type <= 1 ? data1.a : data0.a;
|
||||
|
||||
UNITY_BRANCH
|
||||
if (_GradientLength > 0)
|
||||
{
|
||||
// half t = evaluateTime((gradientTime * 7) + type , _GradientPeriod);
|
||||
half t = evaluateTime(vertexID, 256);
|
||||
Gradient g = NewGradient(0, _GradientLength, _Gradient);
|
||||
o1.gradient = EvaluateGradient(g, t);
|
||||
o2[i].gradient = o1.gradient;
|
||||
}
|
||||
|
||||
float3 start1 = start;
|
||||
float3 end1 = end;
|
||||
// o1
|
||||
{
|
||||
if (shouldSubvidide)
|
||||
{
|
||||
start = subdivide;
|
||||
}
|
||||
|
||||
float3 vertexPos = start;
|
||||
float3 otherPos = end;
|
||||
|
||||
if (isLine && type <= 1)
|
||||
{
|
||||
otherPos = start;
|
||||
|
||||
if (all(end != 0 && start == 0) || all(end == 0 && start != 0))
|
||||
{
|
||||
vertexPos = start;
|
||||
}
|
||||
else
|
||||
{
|
||||
vertexPos = end;
|
||||
}
|
||||
}
|
||||
|
||||
float2 offset = offsets[type];
|
||||
|
||||
UNITY_BRANCH
|
||||
if (isLine)
|
||||
{
|
||||
gradientTime = data0.a;
|
||||
float3 v1 = otherPos - vertexPos;
|
||||
float3 v2 = centerEyePos() - vertexPos;
|
||||
float3 scaleDir = normalize(cross(v1, v2));
|
||||
scaleDir *= _Scale;
|
||||
|
||||
if (offset.x > 0) scaleDir = -scaleDir;
|
||||
// scaleDir *= offset.x * 2 - 1;
|
||||
|
||||
vertexPos += scaleDir * offset.y;
|
||||
vertexPos -= scaleDir * (1 - offset.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
float scaleFactor = 1.5;
|
||||
float2 triangleOffset = offset * 2 - 1;
|
||||
triangleOffset *= _Scale * scaleFactor;
|
||||
triangleOffset.y += _Scale * scaleFactor * UNITY_PI * 0.106;
|
||||
|
||||
float3 vertexOffset = float3(triangleOffset.x, triangleOffset.y, 0);
|
||||
float3 triangleVertex = float3(vertexPos.xy + triangleOffset, vertexPos.z);
|
||||
vertexPos = billboardTriangle(triangleVertex, vertexPos);
|
||||
}
|
||||
|
||||
o1.vertex = mul(UNITY_MATRIX_VP, float4(vertexPos, 1.0));
|
||||
o1.position = start;
|
||||
o1.uv0 = offset;
|
||||
o1.isLine = isLine;
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o1);
|
||||
triStream.Append(o1);
|
||||
}
|
||||
|
||||
// o2
|
||||
UNITY_BRANCH
|
||||
if (shouldSubvidide)
|
||||
{
|
||||
start = start1;
|
||||
end = subdivide;
|
||||
|
||||
float3 vertexPos = start;
|
||||
float3 otherPos = end;
|
||||
|
||||
if (isLine && type <= 1)
|
||||
{
|
||||
otherPos = start;
|
||||
|
||||
if (all(end != 0 && start == 0) || all(end == 0 && start != 0))
|
||||
{
|
||||
vertexPos = start;
|
||||
}
|
||||
else
|
||||
{
|
||||
vertexPos = end;
|
||||
}
|
||||
}
|
||||
|
||||
float2 offset = offsets[type];
|
||||
|
||||
UNITY_BRANCH
|
||||
if (isLine)
|
||||
{
|
||||
gradientTime = data0.a;
|
||||
float3 v1 = otherPos - vertexPos;
|
||||
float3 v2 = centerEyePos() - vertexPos;
|
||||
float3 scaleDir = normalize(cross(v1, v2));
|
||||
scaleDir *= _Scale;
|
||||
|
||||
if (offset.x > 0) scaleDir = -scaleDir;
|
||||
// scaleDir *= offset.x * 2 - 1;
|
||||
|
||||
vertexPos += scaleDir * offset.y;
|
||||
vertexPos -= scaleDir * (1 - offset.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
float scaleFactor = 1.5;
|
||||
float2 triangleOffset = offset * 2 - 1;
|
||||
triangleOffset *= _Scale * scaleFactor;
|
||||
triangleOffset.y += _Scale * scaleFactor * UNITY_PI * 0.106;
|
||||
|
||||
float3 vertexOffset = float3(triangleOffset.x, triangleOffset.y, 0);
|
||||
float3 triangleVertex = float3(vertexPos.xy + triangleOffset, vertexPos.z);
|
||||
vertexPos = billboardTriangle(triangleVertex, vertexPos);
|
||||
}
|
||||
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o2[i]);
|
||||
o2[i].vertex = mul(UNITY_MATRIX_VP, float4(vertexPos, 1.0));
|
||||
o2[i].uv0 = offset;
|
||||
o2[i].isLine = isLine;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
o2[0].isLine = o1.isLine;
|
||||
o2[1].isLine = o1.isLine;
|
||||
o2[2].isLine = o1.isLine;
|
||||
|
||||
o2[0].position = o1.position;
|
||||
o2[1].position = o1.position;
|
||||
o2[2].position = o1.position;
|
||||
|
||||
if (shouldSubvidide)
|
||||
{
|
||||
triStream.RestartStrip();
|
||||
triStream.Append(o2[0]);
|
||||
triStream.Append(o2[1]);
|
||||
triStream.Append(o2[2]);
|
||||
}
|
||||
triStream.RestartStrip();
|
||||
}
|
||||
#endif
|
||||
|
||||
half3 HueShift(float3 In, float Offset)
|
||||
{
|
||||
float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||
float4 P = lerp(float4(In.bg, K.wz), float4(In.gb, K.xy), step(In.b, In.g));
|
||||
float4 Q = lerp(float4(P.xyw, In.r), float4(In.r, P.yzx), step(P.x, In.r));
|
||||
float D = Q.x - min(Q.w, Q.y);
|
||||
float E = 1e-10;
|
||||
float3 hsv = float3(abs(Q.z + (Q.w - Q.y)/(6.0 * D + E)), D / (Q.x + E), Q.x);
|
||||
|
||||
float hue = hsv.x + Offset / 360;
|
||||
hsv.x = (hue < 0)
|
||||
? hue + 1
|
||||
: (hue > 1)
|
||||
? hue - 1
|
||||
: hue;
|
||||
|
||||
float4 K2 = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||
float3 P2 = abs(frac(hsv.xxx + K2.xyz) * 6.0 - K2.www);
|
||||
return hsv.z * lerp(K2.xxx, saturate(P2 - K2.xxx), hsv.y);
|
||||
}
|
||||
|
||||
float TriangleInsideQuad(float2 uv, float2 p0, float2 p1, float2 p2)
|
||||
{
|
||||
float e0 = (p1.x - p0.x) * (uv.y - p0.y) - (p1.y - p0.y) * (uv.x - p0.x);
|
||||
float e1 = (p2.x - p1.x) * (uv.y - p1.y) - (p2.y - p1.y) * (uv.x - p1.x);
|
||||
float e2 = (p0.x - p2.x) * (uv.y - p2.y) - (p0.y - p2.y) * (uv.x - p2.x);
|
||||
|
||||
return (e0 >= 0 && e1 >= 0 && e2 >= 0) ? 1.0 : 0.0;
|
||||
}
|
||||
|
||||
#ifdef USE_GEOM
|
||||
half4 frag(g2f i) : SV_Target
|
||||
#else
|
||||
half4 frag(v2f i) : SV_Target
|
||||
#endif
|
||||
{
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); //Insert
|
||||
|
||||
half alpha = 1;
|
||||
|
||||
// uint samplecount = GetRenderTargetSampleCount();
|
||||
bool inEraseRange = distance(_EraserPosition, i.position) < _EraseDistance;
|
||||
|
||||
bool eraseColor = false;
|
||||
UNITY_BRANCH
|
||||
if (!i.isLine)
|
||||
{
|
||||
float2 coord = i.uv0.xy;
|
||||
coord.x -= 0.5;
|
||||
coord.y -= 1./3.;
|
||||
|
||||
float circle = length(coord);
|
||||
float size = 1.0 / 3.0;
|
||||
|
||||
float pwidth = max(fwidth(circle), 0.0001);
|
||||
alpha = saturate((size - circle) / pwidth);
|
||||
|
||||
#ifndef OUTLINE_PASS
|
||||
bool triangleOutline = 1 - TriangleInsideQuad(i.uv0, float2(0.5,0.94), float2(-0.02,0.03), float2(1.02,0.03));
|
||||
if (inEraseRange && triangleOutline)
|
||||
{
|
||||
eraseColor = true;
|
||||
alpha = 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
float size = abs(i.uv0.y - 0.5) * 2;
|
||||
size = 1-size;
|
||||
float pwidth = max(fwidth(size), 0.0001);
|
||||
|
||||
alpha = saturate((size) / pwidth);
|
||||
alpha = saturate(alpha + pwidth);
|
||||
|
||||
}
|
||||
|
||||
// alpha = alpha * samplecount + 0.5;
|
||||
// cov = (1u << (uint)(alpha)) - 1u;
|
||||
|
||||
if (alpha < 0.1) discard;
|
||||
|
||||
|
||||
half3 color = _GradientLength > 0 ? i.gradient : _Color;
|
||||
|
||||
#ifdef OUTLINE_PASS
|
||||
color = HueShift(color, _OutlineHue);
|
||||
color *= _OutlineValue;
|
||||
#endif
|
||||
|
||||
if (eraseColor)
|
||||
{
|
||||
color = float3(1,0.1,0.1);
|
||||
}
|
||||
|
||||
#ifdef _VRC_LIGHTVOLUMES
|
||||
float3 up = float3(0,1,0);
|
||||
float3 dir = normalize(_WorldSpaceCameraPos.xyz - i.position);
|
||||
float3 L0, L1r, L1g, L1b;
|
||||
LightVolumeSH(i.position, L0, L1r, L1g, L1b);
|
||||
float3 sh9Dir = L1r.xyz * 0.333333 + L1g.xyz * 0.333333 + L1b.xyz * 0.333333;
|
||||
float3 sh9DirAbs = float3(sh9Dir.x, abs(sh9Dir.y), sh9Dir.z);
|
||||
|
||||
half3 sh = LightVolumeEvaluate(sh9DirAbs, L0, L1r, L1g, L1b);
|
||||
if (any(float3(unity_SHAr.w, unity_SHAg.w, unity_SHAb.w) != L0))
|
||||
color.rgb *= lerp(1.0, sh, _LightVolumesInfluence);
|
||||
#endif
|
||||
|
||||
return half4(color, alpha);
|
||||
}
|
||||
ENDCG
|
||||
SubShader
|
||||
{
|
||||
|
||||
Tags
|
||||
{
|
||||
"RenderType"="Opaque"
|
||||
"DisableBatching" = "True"
|
||||
}
|
||||
|
||||
// PC with Geometry shader
|
||||
Pass
|
||||
{
|
||||
Cull Back
|
||||
Tags { "LightMode" = "ForwardBase" "Queue"="AlphaTest" "RenderType"="TransparentCutout" }
|
||||
|
||||
AlphaToMask On
|
||||
|
||||
Stencil
|
||||
{
|
||||
Ref 128
|
||||
Comp Always
|
||||
Pass Replace
|
||||
}
|
||||
|
||||
CGPROGRAM
|
||||
#pragma target 5.0
|
||||
#pragma require geometry
|
||||
#pragma geometry geom
|
||||
#pragma only_renderers d3d11
|
||||
ENDCG
|
||||
}
|
||||
|
||||
// Outline Pass PC only
|
||||
Pass
|
||||
{
|
||||
Cull Back
|
||||
Tags { "LightMode" = "Always" "Queue"="AlphaTest" "RenderType"="TransparentCutout" }
|
||||
// ZWrite Off
|
||||
// Blend SrcAlpha OneMinusSrcAlpha
|
||||
AlphaToMask On
|
||||
Stencil
|
||||
{
|
||||
Ref 128
|
||||
Comp NotEqual
|
||||
}
|
||||
|
||||
CGPROGRAM
|
||||
#pragma target 5.0
|
||||
#pragma require geometry
|
||||
#pragma geometry geom
|
||||
#pragma only_renderers d3d11
|
||||
|
||||
#pragma multi_compile OUTLINE_PASS
|
||||
ENDCG
|
||||
}
|
||||
|
||||
// Pass
|
||||
// {
|
||||
// Name "ShadowCaster"
|
||||
// Tags { "LightMode" = "ShadowCaster" }
|
||||
|
||||
// ZWrite On ZTest LEqual Cull Off
|
||||
|
||||
// CGPROGRAM
|
||||
// #pragma multi_compile_shadowcaster
|
||||
// ENDCG
|
||||
// }
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags
|
||||
{
|
||||
"RenderType"="Opaque"
|
||||
"DisableBatching" = "True"
|
||||
}
|
||||
|
||||
// quest
|
||||
Pass
|
||||
{
|
||||
Cull Back
|
||||
Tags { "LightMode" = "ForwardBase" "Queue"="AlphaTest" "RenderType"="TransparentCutout" }
|
||||
|
||||
AlphaToMask On
|
||||
|
||||
CGPROGRAM
|
||||
#pragma exclude_renderers d3d11
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
209
Packages/com.z3y.vrcmarkerpro/Runtime/Shaders/Marker Mesh.shader
Normal file
@@ -0,0 +1,209 @@
|
||||
Shader "Hidden/VRCMarker Internal/Mesh"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
|
||||
_Color ("Color", Color) = (1,1,1,1)
|
||||
[NoScaleOffset] _MainTex ("Desaturated Albedo (R), Color Mask B, Smoothness A", 2D) = "white" {}
|
||||
|
||||
_Decal ("Decal (RGB), Mask (A)", 2D) = "black" {}
|
||||
|
||||
//[NoScaleOffset] _Data("Occlusion G, Color Mask B, Smoothness A", 2D) = "white" {}
|
||||
_Glossiness ("Smoothness", Range(0,1)) = 0.5
|
||||
_AccentSaturation ("Saturation", Range(0,1)) = 0.8
|
||||
|
||||
[Space(10)]
|
||||
[Toggle(_LTCGI)] _LTCGI ("Enable LTCGI", Float) = 0
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderType"="Opaque" "LTCGI"="_LTCGI"}
|
||||
LOD 200
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Standard addshadow
|
||||
#pragma target 4.5
|
||||
|
||||
#pragma shader_feature_local _LTCGI
|
||||
|
||||
#ifdef SHADER_API_MOBILE
|
||||
#undef _LTCGI
|
||||
#endif
|
||||
|
||||
#ifndef SHADER_TARGET_SURFACE_ANALYSIS
|
||||
#if defined(_LTCGI)
|
||||
#include "Packages/at.pimaker.ltcgi/Shaders/LTCGI.cginc"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
float GSAA(float3 worldNormal, float perceptualRoughness)
|
||||
{
|
||||
// Kaplanyan 2016, "Stable specular highlights"
|
||||
// Tokuyoshi 2017, "Error Reduction and Simplification for Shading Anti-Aliasing"
|
||||
// Tokuyoshi and Kaplanyan 2019, "Improved Geometric Specular Antialiasing"
|
||||
|
||||
// This implementation is meant for deferred rendering in the original paper but
|
||||
// we use it in forward rendering as well (as discussed in Tokuyoshi and Kaplanyan
|
||||
// 2019). The main reason is that the forward version requires an expensive transform
|
||||
// of the half vector by the tangent frame for every light. This is therefore an
|
||||
// approximation but it works well enough for our needs and provides an improvement
|
||||
// over our original implementation based on Vlachos 2015, "Advanced VR Rendering".
|
||||
|
||||
float3 du = ddx(worldNormal);
|
||||
float3 dv = ddy(worldNormal);
|
||||
|
||||
float variance = 0.15 * (dot(du, du) + dot(dv, dv));
|
||||
|
||||
float roughness = perceptualRoughness * perceptualRoughness;
|
||||
float kernelRoughness = min(2.0 * variance, 0.1);
|
||||
float squareRoughness = saturate(roughness * roughness + kernelRoughness);
|
||||
|
||||
return sqrt(sqrt(squareRoughness));
|
||||
}
|
||||
|
||||
struct Gradient
|
||||
{
|
||||
int type;
|
||||
int colorsLength;
|
||||
half4 colors[8];
|
||||
};
|
||||
|
||||
Gradient NewGradient(int type, int colorsLength, half4 colors[8])
|
||||
{
|
||||
Gradient output =
|
||||
{
|
||||
type, colorsLength, colors
|
||||
};
|
||||
return output;
|
||||
}
|
||||
|
||||
half3 EvaluateGradient(Gradient gradient, half time)
|
||||
{
|
||||
half3 color = gradient.colors[0].rgb;
|
||||
[unroll(6)]
|
||||
for (int c = 1; c < gradient.colorsLength; c++)
|
||||
{
|
||||
half colorPos = saturate((time - gradient.colors[c - 1].w) / (gradient.colors[c].w - gradient.colors[c - 1].w)) * step(c, gradient.colorsLength - 1);
|
||||
color = lerp(color, gradient.colors[c].rgb, lerp(colorPos, step(0.01, colorPos), gradient.type));
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float2 uv2_MainTex;
|
||||
float4 color : COLOR;
|
||||
float3 worldNormal; INTERNAL_DATA
|
||||
#ifdef _LTCGI
|
||||
float2 uv2_LightMap;
|
||||
float3 worldPos;
|
||||
#endif
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
sampler2D _Decal;
|
||||
float4 _Decal_ST;
|
||||
half _AccentSaturation;
|
||||
half _Glossiness;
|
||||
//SamplerState sampler_MainTex;
|
||||
//SamplerState sampler_MetallicGlossMap;
|
||||
|
||||
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
|
||||
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
|
||||
// #pragma instancing_options assumeuniformscaling
|
||||
UNITY_INSTANCING_BUFFER_START(Props)
|
||||
UNITY_DEFINE_INSTANCED_PROP(half3, _Color)
|
||||
UNITY_INSTANCING_BUFFER_END(Props)
|
||||
|
||||
half4 _Gradient[8];
|
||||
uint _GradientLength;
|
||||
|
||||
float3 get_camera_pos() {
|
||||
float3 worldCam;
|
||||
worldCam.x = unity_CameraToWorld[0][3];
|
||||
worldCam.y = unity_CameraToWorld[1][3];
|
||||
worldCam.z = unity_CameraToWorld[2][3];
|
||||
return worldCam;
|
||||
}
|
||||
|
||||
float3 F_Schlick(float u, float3 f0, float f90)
|
||||
{
|
||||
return f0 + (f90 - f0) * pow(1.0 - u, 5.0);
|
||||
}
|
||||
|
||||
float _WritePosition;
|
||||
|
||||
#ifndef SHADER_TARGET_SURFACE_ANALYSIS
|
||||
#include "Line.cginc"
|
||||
#endif
|
||||
|
||||
void surf (Input IN, inout SurfaceOutputStandard o)
|
||||
{
|
||||
half4 dataTex = tex2D(_MainTex, IN.uv_MainTex);
|
||||
half4 decal = tex2D(_Decal, IN.uv_MainTex * _Decal_ST.xy + _Decal_ST.zw);
|
||||
|
||||
half3 color = UNITY_ACCESS_INSTANCED_PROP(Props, _Color);
|
||||
|
||||
|
||||
half3 albedo = dataTex.r;
|
||||
half3 colorMask = dataTex.b;
|
||||
UNITY_BRANCH
|
||||
if (_GradientLength > 0)
|
||||
{
|
||||
Gradient g = NewGradient(0, _GradientLength, _Gradient);
|
||||
color = EvaluateGradient(g, IN.uv2_MainTex.y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
half grayscale = dot(color, float3(0.2125, 0.7154, 0.0721));
|
||||
half3 desaturatedColor = lerp(grayscale, color, _AccentSaturation);
|
||||
albedo = lerp(albedo, desaturatedColor, colorMask);
|
||||
|
||||
albedo = lerp(albedo, decal.rgb, decal.a);
|
||||
|
||||
o.Albedo = albedo;
|
||||
o.Metallic = 0;
|
||||
float rawSmoothness = dataTex.a;
|
||||
o.Smoothness = (1.0f - GSAA(IN.worldNormal, 1.0f - dataTex.a)) * _Glossiness;
|
||||
o.Alpha = 1;
|
||||
|
||||
#ifndef SHADER_TARGET_SURFACE_ANALYSIS
|
||||
float positionCount = _WritePosition;
|
||||
half inkLevelMask = ((IN.uv2_MainTex.y) > 0) * (1-colorMask);
|
||||
half inkLevel = (IN.uv2_MainTex.y) > (positionCount / COUNT);
|
||||
o.Albedo += lerp(positionCount >= COUNT ? half3(1,0,0) : 0.4, 1, inkLevel) * inkLevelMask * 0.25;
|
||||
#endif
|
||||
|
||||
#ifndef SHADER_TARGET_SURFACE_ANALYSIS
|
||||
#ifdef _LTCGI
|
||||
{
|
||||
float3 normal = WorldNormalVector(IN, o.Normal);
|
||||
float3 spec = 0, diff = 0;
|
||||
float3 viewDir = normalize(get_camera_pos() - IN.worldPos);
|
||||
float NoV = saturate(dot(normal, viewDir));
|
||||
float f0 = 0.16 * 0.5 * 0.5;
|
||||
float fr = F_Schlick(NoV, f0, 1);
|
||||
LTCGI_Contribution(
|
||||
IN.worldPos,
|
||||
normalize(normal),
|
||||
viewDir,
|
||||
1 - o.Smoothness,
|
||||
IN.uv2_LightMap,
|
||||
diff,
|
||||
spec
|
||||
);
|
||||
o.Emission += spec * fr * UNITY_PI * dataTex.a;
|
||||
o.Emission += diff * o.Albedo;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
FallBack "Diffuse"
|
||||
}
|
||||
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Textures/Decal Pro.psd
Normal file
@@ -0,0 +1,77 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: New Material
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
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_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}
|
||||
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Textures/Packed Data.psd
Normal file
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Textures/arm_packed.tga
Normal file
|
After Width: | Height: | Size: 192 KiB |
|
After Width: | Height: | Size: 256 KiB |
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Textures/marker_albedo.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Textures/marker_ao.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,40 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!84 &8400000
|
||||
RenderTexture:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: rt_copy
|
||||
m_ImageContentsHash:
|
||||
serializedVersion: 2
|
||||
Hash: 00000000000000000000000000000000
|
||||
m_ForcedFallbackFormat: 4
|
||||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 256
|
||||
m_Height: 256
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 0
|
||||
m_ColorFormat: 52
|
||||
m_MipMap: 0
|
||||
m_GenerateMips: 0
|
||||
m_SRGB: 0
|
||||
m_UseDynamicScale: 0
|
||||
m_BindMS: 0
|
||||
m_EnableCompatibleFormat: 1
|
||||
m_EnableRandomWrite: 0
|
||||
m_TextureSettings:
|
||||
serializedVersion: 2
|
||||
m_FilterMode: 0
|
||||
m_Aniso: 0
|
||||
m_MipBias: 0
|
||||
m_WrapU: 1
|
||||
m_WrapV: 1
|
||||
m_WrapW: 1
|
||||
m_Dimension: 2
|
||||
m_VolumeDepth: 1
|
||||
m_ShadowSamplingMode: 2
|
||||
@@ -0,0 +1,40 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!84 &8400000
|
||||
RenderTexture:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: rt_count
|
||||
m_ImageContentsHash:
|
||||
serializedVersion: 2
|
||||
Hash: 00000000000000000000000000000000
|
||||
m_ForcedFallbackFormat: 4
|
||||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 1
|
||||
m_Height: 1
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 0
|
||||
m_ColorFormat: 49
|
||||
m_MipMap: 0
|
||||
m_GenerateMips: 0
|
||||
m_SRGB: 0
|
||||
m_UseDynamicScale: 0
|
||||
m_BindMS: 0
|
||||
m_EnableCompatibleFormat: 1
|
||||
m_EnableRandomWrite: 0
|
||||
m_TextureSettings:
|
||||
serializedVersion: 2
|
||||
m_FilterMode: 0
|
||||
m_Aniso: 0
|
||||
m_MipBias: 0
|
||||
m_WrapU: 1
|
||||
m_WrapV: 1
|
||||
m_WrapW: 1
|
||||
m_Dimension: 2
|
||||
m_VolumeDepth: 1
|
||||
m_ShadowSamplingMode: 2
|
||||
@@ -0,0 +1,40 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!84 &8400000
|
||||
RenderTexture:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: rt_defrag
|
||||
m_ImageContentsHash:
|
||||
serializedVersion: 2
|
||||
Hash: 00000000000000000000000000000000
|
||||
m_ForcedFallbackFormat: 4
|
||||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 256
|
||||
m_Height: 256
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 0
|
||||
m_ColorFormat: 49
|
||||
m_MipMap: 1
|
||||
m_GenerateMips: 0
|
||||
m_SRGB: 0
|
||||
m_UseDynamicScale: 0
|
||||
m_BindMS: 0
|
||||
m_EnableCompatibleFormat: 1
|
||||
m_EnableRandomWrite: 0
|
||||
m_TextureSettings:
|
||||
serializedVersion: 2
|
||||
m_FilterMode: 0
|
||||
m_Aniso: 0
|
||||
m_MipBias: 0
|
||||
m_WrapU: 1
|
||||
m_WrapV: 1
|
||||
m_WrapW: 1
|
||||
m_Dimension: 2
|
||||
m_VolumeDepth: 1
|
||||
m_ShadowSamplingMode: 2
|
||||
BIN
Packages/com.z3y.vrcmarkerpro/Runtime/Textures/white.png
Normal file
|
After Width: | Height: | Size: 116 B |
77
Packages/com.z3y.vrcmarkerpro/Tests/Floor.mat
Normal file
@@ -0,0 +1,77 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Floor
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
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: 4, y: 4}
|
||||
m_Offset: {x: 0, y: -0.42}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 4, y: 4}
|
||||
m_Offset: {x: 0, y: -0.42}
|
||||
- _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_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _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}
|
||||
77
Packages/com.z3y.vrcmarkerpro/Tests/Mat Dark.mat
Normal file
@@ -0,0 +1,77 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Mat Dark
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
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: 100, y: 100}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 100, y: 100}
|
||||
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_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _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: 0.26415092, g: 0.26415092, b: 0.26415092, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
77
Packages/com.z3y.vrcmarkerpro/Tests/Mat.mat
Normal file
@@ -0,0 +1,77 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Mat
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
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_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _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}
|
||||
83
Packages/com.z3y.vrcmarkerpro/Tests/Surface.mat
Normal file
@@ -0,0 +1,83 @@
|
||||
%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: Surface
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
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: 50, y: 50}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Scale: {x: 50, y: 50}
|
||||
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
|
||||
- _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: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
26175
Packages/com.z3y.vrcmarkerpro/Tests/VRCMarker Test.unity
Normal file
@@ -0,0 +1,77 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Debug 1
|
||||
m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
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: 8400000, guid: 23b0ff86988d142428b2d0683622bb53, type: 2}
|
||||
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_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}
|
||||
@@ -0,0 +1,83 @@
|
||||
%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: Debug 2
|
||||
m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
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: []
|
||||
@@ -0,0 +1,77 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Debug 3
|
||||
m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
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: 8400000, guid: 1ed1ab4462fcc4543b477436a26b5cc1, type: 2}
|
||||
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_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}
|
||||
@@ -0,0 +1,83 @@
|
||||
%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: Debug Alpha
|
||||
m_Shader: {fileID: 4800000, guid: b74d3cf464e188c46b1c9607971d2dc0, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
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: []
|
||||
BIN
Packages/com.z3y.vrcmarkerpro/Tests/canvas.fbx
Normal file
297
Packages/com.z3y.vrcmarkerpro/Tests/canvas.prefab
Normal file
@@ -0,0 +1,297 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1452103638024464948
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2264528018711015566}
|
||||
- component: {fileID: 2937160223820840747}
|
||||
- component: {fileID: 1091582914257193953}
|
||||
m_Layer: 0
|
||||
m_Name: canvas
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2264528018711015566
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1452103638024464948}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0.044928513, y: -0.99899024, z: 0.0000020721925, w: 0.000045761462}
|
||||
m_LocalPosition: {x: 1.6437378, y: 0.1267519, z: 1.312024}
|
||||
m_LocalScale: {x: 0.65492946, y: 0.65492946, z: 0.65492946}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1794545093534703247}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -179.99501, z: 5.15}
|
||||
--- !u!33 &2937160223820840747
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1452103638024464948}
|
||||
m_Mesh: {fileID: -2763691740356276834, guid: 645209ae0647eed4ca727251150295ba, type: 3}
|
||||
--- !u!23 &1091582914257193953
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1452103638024464948}
|
||||
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: 25449cbcaf3fe2246ae0bca0be62e54b, 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!1 &6441583575582319720
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6607329237177276291}
|
||||
- component: {fileID: 5892025165778285471}
|
||||
- component: {fileID: 1266293551810439160}
|
||||
m_Layer: 0
|
||||
m_Name: Quad (1)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6607329237177276291
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6441583575582319720}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -1, z: -0, w: -0.0000002980232}
|
||||
m_LocalPosition: {x: -0, y: 0, z: -0.55}
|
||||
m_LocalScale: {x: 1, y: 1, z: 0.13514}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1794545093534703247}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -179.99998, z: 0}
|
||||
--- !u!33 &5892025165778285471
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6441583575582319720}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &1266293551810439160
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6441583575582319720}
|
||||
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: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
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!1001 &2341610225512891718
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 2264528018711015566}
|
||||
m_Modifications:
|
||||
- target: {fileID: 2525016064797594496, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_Size.z
|
||||
value: 3.28678
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2525016064797594496, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_Center.x
|
||||
value: 0.0000000018411012
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2525016064797594496, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_Center.y
|
||||
value: 2.3038542e-12
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2525016064797594496, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_Center.z
|
||||
value: 0.41039863
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2525016064797594496, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_IsTrigger
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2804507977247468605, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.x
|
||||
value: 1.6345485
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 1.5552593
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.z
|
||||
value: 0.05
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -0.042
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.131
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 0.7063799
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0.03275271
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0.70631623
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0.03274388
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: -5.309
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 89.995
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4078171463642782669, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: '[VRCMarkerSurface]'
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 6607329237177276291}
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: f4972511ac80b634f9d7513d03025cbc, type: 3}
|
||||
--- !u!4 &1794545093534703247 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 4078171463642782665, guid: f4972511ac80b634f9d7513d03025cbc,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 2341610225512891718}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
BIN
Packages/com.z3y.vrcmarkerpro/Tests/ui.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
Packages/com.z3y.vrcmarkerpro/Tests/world.fbx
Normal file
135
Packages/com.z3y.vrcmarkerpro/[VRCMarkerSurface].prefab
Normal file
@@ -0,0 +1,135 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &2804507977247468605
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4206226292357891494}
|
||||
- component: {fileID: 8799525878674398480}
|
||||
- component: {fileID: 7494939673651588351}
|
||||
m_Layer: 0
|
||||
m_Name: Quad
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4206226292357891494
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2804507977247468605}
|
||||
m_LocalRotation: {x: -0, y: -1, z: -0, w: -0.0000002980232}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -0.5}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4078171463642782665}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -179.99998, z: 0}
|
||||
--- !u!33 &8799525878674398480
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2804507977247468605}
|
||||
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &7494939673651588351
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2804507977247468605}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
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
|
||||
--- !u!1 &4078171463642782669
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4078171463642782665}
|
||||
- component: {fileID: 4078171463642782664}
|
||||
- component: {fileID: 2525016064797594496}
|
||||
m_Layer: 0
|
||||
m_Name: '[VRCMarkerSurface]'
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4078171463642782665
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4078171463642782669}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0.1}
|
||||
m_LocalScale: {x: 1, y: 1, z: 0.05}
|
||||
m_Children:
|
||||
- {fileID: 4206226292357891494}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &4078171463642782664
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4078171463642782669}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!65 &2525016064797594496
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4078171463642782669}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 1
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||