From f5228c534f2b19efa69f0e681834c44df6085bf1 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Fri, 3 May 2024 06:32:48 +0100 Subject: [PATCH] Passthrough Hull Brush (#613) This is an MVP for a passthrough brush. It's limited at present: Only works when the environment is set to passthrough. Punches through non-opaque brushes even when they are nearer to the camera (is this an issue with rendering queues or something else? Punches through all brushes further from the camera so can't be used for "portal" style effects. I think it still adds some value and it's low-hanging fruit. * First stab at a passthrough brush * Flip exclude logic * Hull passthrough tweaks * dotnet-format * Build complains if there's no entry for Cull * Dummy commit to test pre-commit check * Need to define this in every file it's used in. * Try and nudge pre-commit into working --------- Co-authored-by: Mike Miller <87874+mikeage@users.noreply.github.com> --- Assets/Manifest_Experimental.asset | 2 + .../Resources/X/Brushes/PassthroughHull.meta | 8 ++ .../HullPrefabPassthrough.prefab | 103 +++++++++++++++ .../HullPrefabPassthrough.prefab.meta | 7 + .../PassthroughHull/PassthroughHull.asset | 90 +++++++++++++ .../PassthroughHull.asset.meta | 8 ++ .../PassthroughHull/PassthroughHull.mat | 98 ++++++++++++++ .../PassthroughHull/PassthroughHull.mat.meta | 8 ++ .../X/Brushes/PassthroughHull/buttonimage.png | Bin 0 -> 18263 bytes .../PassthroughHull/buttonimage.png.meta | 121 ++++++++++++++++++ Assets/Scripts/BrushCatalog.cs | 14 +- Assets/Scripts/VrSdk.cs | 8 ++ .../Strings/Strings Shared Data.asset | 4 + .../Localization/Strings/Strings_en.asset | 4 + Assets/Shaders/Passthrough.shader | 55 ++++++++ Assets/Shaders/Passthrough.shader.meta | 10 ++ 16 files changed, 537 insertions(+), 3 deletions(-) create mode 100644 Assets/Resources/X/Brushes/PassthroughHull.meta create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab.meta create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset.meta create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat.meta create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/buttonimage.png create mode 100644 Assets/Resources/X/Brushes/PassthroughHull/buttonimage.png.meta create mode 100644 Assets/Shaders/Passthrough.shader create mode 100644 Assets/Shaders/Passthrough.shader.meta diff --git a/Assets/Manifest_Experimental.asset b/Assets/Manifest_Experimental.asset index 96b5d8072e..ebaa10ad3c 100644 --- a/Assets/Manifest_Experimental.asset +++ b/Assets/Manifest_Experimental.asset @@ -66,6 +66,8 @@ MonoBehaviour: - {fileID: 11400000, guid: 2ac14128061517f47a61f3c85ce26dfa, type: 2} - {fileID: 11400000, guid: 95219c84db13d7c49b0bae92b5f8dc9c, type: 2} - {fileID: 11400000, guid: b9280b7e789abdd49bd5d85c5554afd3, type: 2} + - {fileID: 11400000, guid: d25091db0e878ba458b54227b23cad57, type: 2} Environments: - {fileID: 11400000, guid: c4b465a813a79c044874468d6e60f26c, type: 2} + Locales: [] CompatibilityBrushes: [] diff --git a/Assets/Resources/X/Brushes/PassthroughHull.meta b/Assets/Resources/X/Brushes/PassthroughHull.meta new file mode 100644 index 0000000000..15d4af7ade --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20885a1974fccc44da64652851779c05 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab b/Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab new file mode 100644 index 0000000000..02c23f8d31 --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab @@ -0,0 +1,103 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 400000} + - component: {fileID: 114000011676573980} + - component: {fileID: 2300000} + - component: {fileID: 3300000} + m_Layer: 0 + m_Name: HullPrefabPassthrough + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100000} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000011676573980 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 05481b74b9f47ad45a3f71a4890c7f63, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Faceted: 1 + m_TrackInterior: 1 + m_KnotConversion: 2 + m_Simplification_PS: 0.001 + m_SimplifyMode: 0 +--- !u!23 &2300000 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: ce8b2be5f7b63f344ae603ba6f4b4aec, 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: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &3300000 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100000} + m_Mesh: {fileID: 0} diff --git a/Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab.meta b/Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab.meta new file mode 100644 index 0000000000..46fbd278fa --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull/HullPrefabPassthrough.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f04947adf1f654f4081f1f32deb5f6d4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset new file mode 100644 index 0000000000..5cd62f4cb4 --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset @@ -0,0 +1,90 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c71b2ac88638c5c41a0a0681f70d2512, type: 3} + m_Name: PassthroughHull + m_EditorClassIdentifier: + m_Guid: + m_storage: cc131ff8-0d17-4677-93e0-d7cd19fea9ac + m_DurableName: PassthroughHull + m_CreationVersion: + m_ShaderVersion: 10.0 + m_BrushPrefab: {fileID: 100000, guid: f04947adf1f654f4081f1f32deb5f6d4, type: 3} + m_Tags: + - experimental + - hull + - passthrough + m_Nondeterministic: 0 + m_Supersedes: {fileID: 0} + m_LooksIdentical: 0 + m_ButtonTexture: {fileID: 2800000, guid: 3206c9396267b1b4784c2c545300582c, type: 3} + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 176764812224364544 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionExtra: + m_BrushAudioLayers: + - {fileID: 8300000, guid: 15b5f6d2886398349b2f6221289deef0, type: 3} + - {fileID: 8300000, guid: 7f3c17c51669e2d48b29fd4056b713a4, type: 3} + - {fileID: 8300000, guid: 80f7380fb57f05b49bf3407ca40404fd, type: 3} + m_BrushAudioBasePitch: 1 + m_BrushAudioMaxPitchShift: 0 + m_BrushAudioMaxVolume: 1 + m_BrushVolumeUpSpeed: 1.2 + m_BrushVolumeDownSpeed: 1.2 + m_VolumeVelocityRangeMultiplier: 1.5 + m_AudioReactive: 0 + m_ButtonAudio: {fileID: 0} + m_Material: {fileID: 2100000, guid: ce8b2be5f7b63f344ae603ba6f4b4aec, type: 2} + m_TextureAtlasV: 1 + m_TileRate: 0.01 + m_UseBloomSwatchOnColorPicker: 0 + m_BrushSizeRange: {x: 0.005, y: 1} + m_PressureSizeRange: {x: 0.1, y: 1} + m_SizeVariance: 0 + m_PreviewPressureSizeMin: 0.001 + m_Opacity: 1 + m_PressureOpacityRange: {x: 1, y: 1} + m_ColorLuminanceMin: 0 + m_ColorSaturationMax: 1 + m_ParticleSpeed: 0 + m_ParticleRate: 1 + m_ParticleInitialRotationRange: 0 + m_RandomizeAlpha: 0 + m_SprayRateMultiplier: 1 + m_RotationVariance: 360 + m_PositionVariance: 0 + m_SizeRatio: {x: 1, y: 1} + m_M11Compatibility: 1 + m_SolidMinLengthMeters_PS: 0.002 + m_TubeStoreRadiusInTexcoord0Z: 0 + m_RenderBackfaces: 0 + m_BackIsInvisible: 0 + m_BackfaceHueShift: 0 + m_BoundsPadding: 0 + m_PlayBackAtStrokeGranularity: 1 + m_BlendMode: 0 + m_EmissiveFactor: 0 + m_AllowExport: 1 + m_SupportsSimplification: 0 + m_HeadMinPoints: 1 + m_HeadPointStep: 1 + m_TailMinPoints: 1 + m_TailPointStep: 1 + m_MiddlePointStep: 0 + references: + version: 2 + RefIds: [] diff --git a/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset.meta b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset.meta new file mode 100644 index 0000000000..11abfef360 --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d25091db0e878ba458b54227b23cad57 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat new file mode 100644 index 0000000000..f6b1272b61 --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat @@ -0,0 +1,98 @@ +%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: PassthroughHull + m_Shader: {fileID: 4800000, guid: 2e1da1285b95b584383074c95b23dc2e, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _Bottom: + m_Texture: {fileID: 2800000, guid: 36752f6114447a844a013406d30a3c29, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _Side: + m_Texture: {fileID: 2800000, guid: 31a0dba64c25fa442a02171bc2131ccc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Top: + m_Texture: {fileID: 2800000, guid: 36752f6114447a844a013406d30a3c29, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BottomScale: 0.3 + - _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 + - _Shininess: 0.574 + - _SideScale: 5.21 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _TopScale: 0.3 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.29411763, g: 0.29411763, b: 0.29411763, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat.meta b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat.meta new file mode 100644 index 0000000000..f5dc8426c9 --- /dev/null +++ b/Assets/Resources/X/Brushes/PassthroughHull/PassthroughHull.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce8b2be5f7b63f344ae603ba6f4b4aec +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/X/Brushes/PassthroughHull/buttonimage.png b/Assets/Resources/X/Brushes/PassthroughHull/buttonimage.png new file mode 100644 index 0000000000000000000000000000000000000000..823ccb8a31e0b9eec14947ebeeaf9968d9c1982d GIT binary patch literal 18263 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 h&iLikwc@h` includeTags = App.UserConfig.Brushes.IncludeTags.ToList(); + List excludeTags = App.UserConfig.Brushes.ExcludeTags.ToList(); - if (includeTags == null) + if (includeTags == null || includeTags.Count == 0) { Debug.LogError("There will be no brushes because there are no 'include' tags."); } +#if !PASSTHROUGH_SUPPORTED + excludeTags.Add("passthrough"); +#endif + // Filter m_GuiBrushList down to those that are both 'included' and not 'excluded' Brush[] filteredList = m_GuiBrushList.Where((brush) => { diff --git a/Assets/Scripts/VrSdk.cs b/Assets/Scripts/VrSdk.cs index cce18a50c7..4bae5df9fa 100644 --- a/Assets/Scripts/VrSdk.cs +++ b/Assets/Scripts/VrSdk.cs @@ -11,6 +11,11 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +#if OCULUS_SUPPORTED || ZAPBOX_SUPPORTED +#define PASSTHROUGH_SUPPORTED +#endif + using System; using System.Collections.Generic; using System.Linq; @@ -225,6 +230,9 @@ void Awake() var unused = msg.Data.AgeCategory; }); } +#if PASSTHROUGH_SUPPORTED + OVRManager.eyeFovPremultipliedAlphaModeEnabled = false; +#endif #endif // OCULUS_SUPPORTED diff --git a/Assets/Settings/Localization/Strings/Strings Shared Data.asset b/Assets/Settings/Localization/Strings/Strings Shared Data.asset index 0f6941eddc..82bf2e5130 100644 --- a/Assets/Settings/Localization/Strings/Strings Shared Data.asset +++ b/Assets/Settings/Localization/Strings/Strings Shared Data.asset @@ -3279,6 +3279,10 @@ MonoBehaviour: m_Key: CONTROLLER_HINT_THUMBPAD_BRUSHSIZE m_Metadata: m_Items: [] + - m_Id: 176764812224364544 + m_Key: BRUSH_PASSTHROUGHHULL + m_Metadata: + m_Items: [] - m_Id: 188791089062830080 m_Key: ENVIRONMENT_PANEL_RESET_CANVAS m_Metadata: diff --git a/Assets/Settings/Localization/Strings/Strings_en.asset b/Assets/Settings/Localization/Strings/Strings_en.asset index b88ce33e14..f85b1273b4 100644 --- a/Assets/Settings/Localization/Strings/Strings_en.asset +++ b/Assets/Settings/Localization/Strings/Strings_en.asset @@ -3504,6 +3504,10 @@ MonoBehaviour: m_Localized: More info on using Open Brush without VR m_Metadata: m_Items: [] + - m_Id: 176764812224364544 + m_Localized: Passthrough Hull + m_Metadata: + m_Items: [] - m_Id: 224363142209691648 m_Localized: Pick a Subfolder m_Metadata: diff --git a/Assets/Shaders/Passthrough.shader b/Assets/Shaders/Passthrough.shader new file mode 100644 index 0000000000..37d77bc592 --- /dev/null +++ b/Assets/Shaders/Passthrough.shader @@ -0,0 +1,55 @@ +Shader "Special/Passthrough" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 100 + Cull Off + + Pass + { + BlendOp RevSub + Blend One Zero, Zero Zero + + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + 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); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return float4(0, 0, 0, 0); + } + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Shaders/Passthrough.shader.meta b/Assets/Shaders/Passthrough.shader.meta new file mode 100644 index 0000000000..9401106440 --- /dev/null +++ b/Assets/Shaders/Passthrough.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2e1da1285b95b584383074c95b23dc2e +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: