diff --git a/Assets/ArtRes/3D/Fish/fish_red_tail_barracuda/Material/fish_red_tail_barracuda_mat_mb.mat b/Assets/ArtRes/3D/Fish/fish_red_tail_barracuda/Material/fish_red_tail_barracuda_mat_mb.mat new file mode 100644 index 0000000..bc6463e --- /dev/null +++ b/Assets/ArtRes/3D/Fish/fish_red_tail_barracuda/Material/fish_red_tail_barracuda_mat_mb.mat @@ -0,0 +1,281 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8776938483731093280 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: fish_red_tail_barracuda_mat_mb + m_Shader: {fileID: 4800000, guid: 1caf2d026df0a424d8af02bb3196c9bf, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _SURFACE_TYPE_TRANSPARENT + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BarkBaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BarkMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BarkNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: bbbcb3955239d7044802403ff081d4b7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: f60b17854821a8e4f8db8f5bc6e8dbc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DamagedMap: + 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} + - _LayerMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: bbbcb3955239d7044802403ff081d4b7, type: 3} + 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} + - _RainMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ReflectionCube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RoughnessMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SmoothnessNoiseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TrunkBaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TrunkMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TrunkNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - g_GustNoise: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Alpha: 1 + - _AlphaClip: 0.05 + - _AlphaToMask: 0 + - _AnisoTroyPower: 1 + - _Anisotropy: 4 + - _AnisotropyRotate: 180 + - _BackSSSIntensity: 1 + - _BackSubsurfaceDistorin: 0.5 + - _BarkAORemapMax: 1 + - _BarkAORemapMin: 0 + - _BarkMetallic: 1 + - _BarkNormalScale: 1 + - _BarkSmoothnessRemapMax: 1 + - _BarkSmoothnessRemapMin: 0 + - _BarkUseUV3: 1 + - _Blend: 0 + - _BlendMode: 0 + - _BlendModePreserveSpecular: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CausticsScale: 1 + - _CausticsSpeed: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _CustomCube: 0 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _Drag: 1 + - _DstAlphaBlend: 0 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnableAnisotropy: 0 + - _EnableCaustics: 0 + - _EnableDamagedMap: 0 + - _EnableDither: 0 + - _EnableFade: 0 + - _EnableFogMix: 1 + - _EnableRainEffect: 0 + - _EnableRebuildTBN: 0 + - _EnableWind: 0 + - _EnvironmentReflections: 1 + - _FadeDistance: 1 + - _FadeEnd: 100 + - _FadeStart: 0 + - _FrontSSSIntensity: 1 + - _FrontSubsurfaceDistorin: 0.5 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HeightDrag: 0 + - _InitialBend: 0 + - _InnerColorPower: 1 + - _Mask: 5 + - _MaskFactor: 1 + - _MaterialPresetMode: 0 + - _Metallic: 0 + - _NormalScale: 1 + - _ObjectHeight: 0.5 + - _ObjectRadius: 0.5 + - _OcclusionPower: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _PrimaryShift: -1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _RainFactor: 1 + - _RampRange: 0.3 + - _RecalculateWindNormals: 0 + - _ReceiveShadows: 1 + - _ReflectionPower: 0 + - _SSSDiffIntensity: 0 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecBlend: 0.25 + - _SpecularHighlights: 1 + - _SpecularMultiplier: 32 + - _SrcAlphaBlend: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _Stiffness: 1 + - _Surface: 1 + - _TowardLightFactor: 0 + - _TrunkAORemapMax: 1 + - _TrunkAORemapMin: 0 + - _TrunkMetallic: 1 + - _TrunkNormalScale: 1 + - _TrunkSmoothnessRemapMax: 1 + - _TrunkSmoothnessRemapMin: 0 + - _TurbulenceStrength: 1 + - _Type: 1 + - _UseVertexColor: 0 + - _WindStrength: 1 + - _WindVariation: 0.3 + - _WorkflowMode: 0 + - _ZTest: 2 + - _ZWrite: 0 + m_Colors: + - _AOMinMax: {r: 0, g: 1, b: 0, a: 1} + - _BackColor: {r: 0, g: 0, b: 0, a: 0} + - _BarkBaseColor: {r: 1, g: 1, b: 1, a: 0} + - _BarkBlendMaskTilingOffset: {r: 1, g: 1, b: 0, a: 0} + - _BarkTilingOffset: {r: 1, g: 1, b: 0, a: 0} + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _CausticsColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FadeColor: {r: 1, g: 1, b: 1, a: 1} + - _MainColor: {r: 1, g: 1, b: 1, a: 1} + - _MetaAndSmoothMinMax: {r: 0, g: 1, b: 0, a: 1} + - _NewNormal: {r: 0, g: 0, b: 0, a: 0} + - _RampColor: {r: 1, g: 1, b: 1, a: 1} + - _ShadowColor: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _Speed: {r: 0, g: 0, b: 0, a: 0} + - _SubsurfaceColor: {r: 0, g: 0, b: 0, a: 0} + - _TintColor: {r: 1, g: 1, b: 1, a: 1} + - _TrunkBaseColor: {r: 1, g: 1, b: 1, a: 0} + - _TrunkBendFactor: {r: 0, g: 0, b: 0, a: 0} + - _TrunkTilingOffset: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/ArtRes/3D/Fish/fish_red_tail_barracuda/Material/fish_red_tail_barracuda_mat_mb.mat.meta b/Assets/ArtRes/3D/Fish/fish_red_tail_barracuda/Material/fish_red_tail_barracuda_mat_mb.mat.meta new file mode 100644 index 0000000..f9e4c60 --- /dev/null +++ b/Assets/ArtRes/3D/Fish/fish_red_tail_barracuda/Material/fish_red_tail_barracuda_mat_mb.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfaf32ec40aff924392d95a8db39d63a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Oasis/OasisScene.unity b/Assets/Scenes/Oasis/OasisScene.unity index 7c02b65..785bd19 100644 --- a/Assets/Scenes/Oasis/OasisScene.unity +++ b/Assets/Scenes/Oasis/OasisScene.unity @@ -574,7 +574,7 @@ Transform: m_GameObject: {fileID: 31312179} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.6114617, y: -0.12151647, z: 0.593028} + m_LocalPosition: {x: -0.8, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -6904,6 +6904,112 @@ Transform: m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: a60580cd3d43b0649bf7e97e3d579db9, type: 3} m_PrefabInstance: {fileID: 388772381} m_PrefabAsset: {fileID: 0} +--- !u!1 &390224973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 390224974} + - component: {fileID: 390224977} + - component: {fileID: 390224976} + - component: {fileID: 390224975} + m_Layer: 0 + m_Name: Quad (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &390224974 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390224973} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.7, y: 0, z: -116.72302} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1120789876} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &390224975 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390224973} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &390224976 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390224973} + 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: e278105d913e4ff4bae176dba817a84f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &390224977 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390224973} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &390621313 PrefabInstance: m_ObjectHideFlags: 0 @@ -11049,6 +11155,90 @@ Transform: m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: a60580cd3d43b0649bf7e97e3d579db9, type: 3} m_PrefabInstance: {fileID: 652551481} m_PrefabAsset: {fileID: 0} +--- !u!1 &655989233 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 655989236} + - component: {fileID: 655989235} + - component: {fileID: 655989234} + m_Layer: 0 + m_Name: fish_red_tail_barracuda_LOD0 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &655989234 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 655989233} + 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: 82f089674b537fe42b84f66f22c4b13f, type: 2} + - {fileID: 2100000, guid: 872b4d67fd3bbd14caa9aea720bd1b75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &655989235 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 655989233} + m_Mesh: {fileID: 570477287269320233, guid: 339eb591abeebc24fb589a3a0bec722e, type: 3} +--- !u!4 &655989236 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 655989233} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000018075937, y: -0.5621158, z: -0.000000012285431, w: 0.8270586} + m_LocalPosition: {x: -3.11, y: 1, z: -116.9988} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: -68.404, z: 0} --- !u!1 &656460944 GameObject: m_ObjectHideFlags: 0 @@ -11149,7 +11339,7 @@ Transform: m_GameObject: {fileID: 656460944} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.55853826, y: 1.0115165, z: -117.913025} + m_LocalPosition: {x: 0, y: 0, z: -117.913025} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -12394,7 +12584,7 @@ Transform: m_GameObject: {fileID: 742645875} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.55853826, y: 1.0115165, z: -116.72302} + m_LocalPosition: {x: 0, y: 0, z: -116.72302} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -12428,7 +12618,7 @@ Transform: m_GameObject: {fileID: 750999887} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.55853826, y: 1.0115165, z: -116.72302} + m_LocalPosition: {x: 0, y: 0, z: -116.72302} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -15249,6 +15439,90 @@ Transform: m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: e0307081c164aaf4a90933f08206654c, type: 3} m_PrefabInstance: {fileID: 934208068} m_PrefabAsset: {fileID: 0} +--- !u!1 &940609252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 940609255} + - component: {fileID: 940609254} + - component: {fileID: 940609253} + m_Layer: 0 + m_Name: fish_red_tail_barracuda_LOD0_ll + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &940609253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 940609252} + 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: 82f089674b537fe42b84f66f22c4b13f, type: 2} + - {fileID: 2100000, guid: 683236fe3d410e844ac653335bde05c6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &940609254 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 940609252} + m_Mesh: {fileID: 570477287269320233, guid: 339eb591abeebc24fb589a3a0bec722e, type: 3} +--- !u!4 &940609255 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 940609252} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000018075937, y: -0.5621158, z: -0.000000012285431, w: 0.8270586} + m_LocalPosition: {x: -0.715, y: -0.255, z: -117.094} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: -68.404, z: 0} --- !u!1001 &945384022 PrefabInstance: m_ObjectHideFlags: 0 @@ -19075,6 +19349,39 @@ Transform: m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: 7cb78e83e6bfa414f972dedaff480361, type: 3} m_PrefabInstance: {fileID: 1118835857} m_PrefabAsset: {fileID: 0} +--- !u!1 &1120789875 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1120789876} + m_Layer: 0 + m_Name: moit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1120789876 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1120789875} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 390224974} + - {fileID: 1911407710} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1121022082 PrefabInstance: m_ObjectHideFlags: 0 @@ -20381,6 +20688,90 @@ Transform: m_CorrespondingSourceObject: {fileID: 7548273142197716425, guid: 0789421bfb938644babec4c8798c163c, type: 3} m_PrefabInstance: {fileID: 1175910289} m_PrefabAsset: {fileID: 0} +--- !u!1 &1179210692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179210695} + - component: {fileID: 1179210694} + - component: {fileID: 1179210693} + m_Layer: 0 + m_Name: fish_red_tail_barracuda_LOD0_wb + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1179210693 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179210692} + 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: 82f089674b537fe42b84f66f22c4b13f, type: 2} + - {fileID: 2100000, guid: 2d10684597fead649b048a865154ad79, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1179210694 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179210692} + m_Mesh: {fileID: 570477287269320233, guid: 339eb591abeebc24fb589a3a0bec722e, type: 3} +--- !u!4 &1179210695 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179210692} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000018075937, y: -0.5621158, z: -0.000000012285431, w: 0.8270586} + m_LocalPosition: {x: -0.907, y: 0.865, z: -117.12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: -68.404, z: 0} --- !u!1001 &1183481623 PrefabInstance: m_ObjectHideFlags: 0 @@ -22482,7 +22873,7 @@ GameObject: - component: {fileID: 1335403878} - component: {fileID: 1335403877} m_Layer: 0 - m_Name: fish_red_tail_barracuda_LOD0 (1) + m_Name: fish_red_tail_barracuda_LOD0_mb m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -22509,7 +22900,7 @@ MeshRenderer: m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 82f089674b537fe42b84f66f22c4b13f, type: 2} - - {fileID: 2100000, guid: 872b4d67fd3bbd14caa9aea720bd1b75, type: 2} + - {fileID: 2100000, guid: dfaf32ec40aff924392d95a8db39d63a, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -22548,7 +22939,7 @@ Transform: m_GameObject: {fileID: 1335403876} serializedVersion: 2 m_LocalRotation: {x: 0.000000018075937, y: -0.5621158, z: -0.000000012285431, w: 0.8270586} - m_LocalPosition: {x: -1.3689, y: 1, z: -116.9988} + m_LocalPosition: {x: -2.158, y: -0.202, z: -117.059} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -24361,7 +24752,7 @@ Transform: m_GameObject: {fileID: 1534542423} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.55853826, y: 1.0115165, z: -117.913025} + m_LocalPosition: {x: 0, y: 0, z: -117.913025} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -29247,7 +29638,7 @@ Transform: m_GameObject: {fileID: 1829397597} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.221, y: 1.712, z: -116.13} + m_LocalPosition: {x: -3.221, y: 1.12, z: -116.13} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -31030,6 +31421,112 @@ Transform: m_CorrespondingSourceObject: {fileID: 6162762049935161941, guid: 0527f0839c423a4449c9836c1ca41db5, type: 3} m_PrefabInstance: {fileID: 1909011707} m_PrefabAsset: {fileID: 0} +--- !u!1 &1911407709 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1911407710} + - component: {fileID: 1911407713} + - component: {fileID: 1911407712} + - component: {fileID: 1911407711} + m_Layer: 0 + m_Name: Quad (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1911407710 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911407709} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -117.913025} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1120789876} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &1911407711 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911407709} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1911407712 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911407709} + 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: 25b200774f9c48c478a9083d61aad6c9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1911407713 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911407709} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &1913663551 PrefabInstance: m_ObjectHideFlags: 0 @@ -33671,7 +34168,7 @@ Transform: m_GameObject: {fileID: 2128448438} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.6114617, y: -0.12151647, z: 0.593028} + m_LocalPosition: {x: -0.88, y: 1.02, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -36323,8 +36820,12 @@ SceneRoots: - {fileID: 219676304} - {fileID: 1187884597} - {fileID: 2083859764} + - {fileID: 655989236} - {fileID: 1335403879} + - {fileID: 1179210695} + - {fileID: 940609255} - {fileID: 1829397601} - {fileID: 332117873} - {fileID: 2128448439} - {fileID: 31312180} + - {fileID: 1120789876} diff --git a/Assets/Scripts/Features/OIT/LLOIT/LLOITSimpleTranspatent.shader b/Assets/Scripts/Features/OIT/LLOIT/LLOITSimpleTranspatent.shader index 44798e2..7cd4011 100644 --- a/Assets/Scripts/Features/OIT/LLOIT/LLOITSimpleTranspatent.shader +++ b/Assets/Scripts/Features/OIT/LLOIT/LLOITSimpleTranspatent.shader @@ -4,6 +4,9 @@ Shader "OIT/LLOIT/LLOITSimpleTranspatent" { _Color("Color", Color) = (1,1,1,1) _MainTex("MainTex", 2D) = "white" {} + + [Enum(Off, 0, Front, 1, Back, 2)] + _Cull("Cull", Float) = 2.0 } SubShader { @@ -15,7 +18,7 @@ Shader "OIT/LLOIT/LLOITSimpleTranspatent" ZTest LEqual ZWrite Off ColorMask 0 - Cull Off + Cull [_Cull] CGPROGRAM #pragma vertex vert diff --git a/Assets/Scripts/Features/OIT/MOIT/MOITComposite.shader b/Assets/Scripts/Features/OIT/MOIT/MOITComposite.shader index cf2e608..a676ff7 100644 --- a/Assets/Scripts/Features/OIT/MOIT/MOITComposite.shader +++ b/Assets/Scripts/Features/OIT/MOIT/MOITComposite.shader @@ -6,49 +6,71 @@ Shader "Hidden/MOITComposite" } HLSLINCLUDE + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" - // The Blit.hlsl file provides the vertex shader (Vert), - // the input structure (Attributes), and the output structure (Varyings) - #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; - #ifdef _MOMENT_SINGLE_PRECISION - TEXTURE2D_FLOAT(_B0); - #else - TEXTURE2D_HALF(_B0); + v2f vert(uint vertexID: SV_VertexID) + { + v2f o; + float2 uv = float2((vertexID << 1) & 2, vertexID & 2); + float4 pos = float4(uv * 2.0 - 1.0, UNITY_NEAR_CLIP_VALUE, 1.0); + #ifdef UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION + pos = ApplyPretransformRotation(pos); #endif - //TEXTURE2D(_MOIT); // _MOIT is _BlitTexture since we don't need to sample screen tex (alpha blended) - - // sampler_PointClamp sampler_LinearClamp - #define singleSampler sampler_LinearClamp - half4 MOITComposite(Varyings input) : SV_Target - { - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + #if UNITY_UV_STARTS_AT_TOP + uv = float2((vertexID << 1) & 2, 1.0 - (vertexID & 2)); + #endif - //float4 moit = SAMPLE_TEXTURE2D(_BlitTexture, singleSampler, input.texcoord); - half4 moit = SAMPLE_TEXTURE2D(_BlitTexture, singleSampler, input.texcoord); - #ifdef _MOMENT_SINGLE_PRECISION - float b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; - #else - half b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; - #endif - moit.rgb /= moit.a; + o.vertex = pos; + o.uv = uv; + return o; + } - #if _CATCHBIASERRORS_ON - // catch negative color values when alpha is very close to 1 (>0.99) - // TODO: explore why the non shader graph tmpro shader writes negatives values in moit texture (in game view only) - return half4(max(moit.rgb, 0.0), exp(-b0)); - #else - return half4(moit.rgb, exp(-b0)); - #endif - } + #ifdef _MOMENT_SINGLE_PRECISION + TEXTURE2D_FLOAT (_B0); + #else + TEXTURE2D_HALF(_B0); + #endif + + // TEXTURE2D(_MOIT_Texture); + SAMPLER(sampler_LinearClamp); + + TEXTURE2D_HALF(_MOIT); + SAMPLER(sampler_MOIT); + + half4 MOITComposite(v2f input) : SV_Target + { + half4 moit = SAMPLE_TEXTURE2D(_MOIT, sampler_MOIT, input.uv); + #ifdef _MOMENT_SINGLE_PRECISION + float b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.uv).r; + #else + half b0 = SAMPLE_TEXTURE2D(_B0, sampler_LinearClamp, input.uv).r; + #endif + moit.rgb /= moit.a; + + #if _CATCHBIASERRORS_ON + // catch negative color values when alpha is very close to 1 (>0.99) + // TODO: explore why the non shader graph tmpro shader writes negatives values in moit texture (in game view only) + return half4(max(moit.rgb, 0.0), exp(-b0)); + #else + return half4(max(0,moit.rgb), exp(-b0)); + #endif + } ENDHLSL SubShader { - Tags{ "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } + Tags + { + "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" + } ZWrite Off Cull Off Pass @@ -59,55 +81,56 @@ Shader "Hidden/MOITComposite" Blend OneMinusSrcAlpha SrcAlpha HLSLPROGRAM - - #pragma vertex Vert + #pragma vertex vert #pragma fragment MOITComposite + #pragma enable_d3d11_debug_symbols + + #pragma multi_compile_fragment _MOMENT_HALF_PRECISION __MOMENT_SINGLE_PRECISION #pragma shader_feature _CATCHBIASERRORS_ON - ENDHLSL } -// Pass -// { -// Name "CompositeFrameBuffer" -// -// ZTest Always -// Blend OneMinusSrcAlpha SrcAlpha -// -// HLSLPROGRAM -// -// #pragma vertex Vert -// #pragma fragment MOITCompositeFB -// -// #pragma shader_feature _CATCHBIASERRORS_ON -// -// FRAMEBUFFER_INPUT_X_FLOAT(0); -// -// half4 MOITCompositeFB(Varyings input) : SV_Target -// { -// UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -// -// //float4 moit = SAMPLE_TEXTURE2D(_BlitTexture, singleSampler, input.texcoord); -// //float4 moit = LOAD_FRAMEBUFFER_X_INPUT(0, input.positionCS.xy); -// half4 moit = LOAD_FRAMEBUFFER_X_INPUT(0, input.positionCS.xy); -// #ifdef _MOMENT_SINGLE_PRECISION -// float b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; -// #else -// half b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; -// #endif -// moit.rgb /= moit.a; -// -// #if _CATCHBIASERRORS_ON -// // catch negative color values when alpha is very close to 1 (>0.99) -// // TODO: explore why the non shader graph tmpro shader writes negatives values in moit texture (in game view only) -// return half4(max(moit.rgb, 0.0), exp(-b0)); -// #else -// return half4(moit.rgb, exp(-b0)); -// #endif -// } -// -// ENDHLSL -// } + // Pass + // { + // Name "CompositeFrameBuffer" + // + // ZTest Always + // Blend OneMinusSrcAlpha SrcAlpha + // + // HLSLPROGRAM + // + // #pragma vertex Vert + // #pragma fragment MOITCompositeFB + // + // #pragma shader_feature _CATCHBIASERRORS_ON + // + // FRAMEBUFFER_INPUT_X_FLOAT(0); + // + // half4 MOITCompositeFB(Varyings input) : SV_Target + // { + // UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + // + // //float4 moit = SAMPLE_TEXTURE2D(_BlitTexture, singleSampler, input.texcoord); + // //float4 moit = LOAD_FRAMEBUFFER_X_INPUT(0, input.positionCS.xy); + // half4 moit = LOAD_FRAMEBUFFER_X_INPUT(0, input.positionCS.xy); + // #ifdef _MOMENT_SINGLE_PRECISION + // float b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; + // #else + // half b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; + // #endif + // moit.rgb /= moit.a; + // + // #if _CATCHBIASERRORS_ON + // // catch negative color values when alpha is very close to 1 (>0.99) + // // TODO: explore why the non shader graph tmpro shader writes negatives values in moit texture (in game view only) + // return half4(max(moit.rgb, 0.0), exp(-b0)); + // #else + // return half4(moit.rgb, exp(-b0)); + // #endif + // } + // + // ENDHLSL + // } } -} +} \ No newline at end of file diff --git a/Assets/Scripts/Features/OIT/MOIT/MOITFeature.cs b/Assets/Scripts/Features/OIT/MOIT/MOITFeature.cs index eec6d46..4834c45 100644 --- a/Assets/Scripts/Features/OIT/MOIT/MOITFeature.cs +++ b/Assets/Scripts/Features/OIT/MOIT/MOITFeature.cs @@ -101,6 +101,11 @@ public class MOITFeature : ScriptableRendererFeature public void Dispose() { + moitHandle?.Release(); + b0?.Release(); + b1?.Release(); + b2?.Release(); + commandBuffer?.Release(); } RTHandle moitHandle; @@ -148,6 +153,57 @@ public class MOITFeature : ScriptableRendererFeature } Vector4 wrappingZoneParameters = ComputeWrappingZoneParameters(); + + public static bool GetViewDepthMinMaxWithRenderQueue(Camera camera, RenderQueueRange range, + out Vector2 minMax) + { + minMax = Vector2.zero; + bool b = false; + Bounds bounds = new Bounds(); + + Renderer[] coms = Renderer.FindObjectsOfType(); + + if (null == coms || 0 == coms.Length) + { + return false; + } + foreach (var p in coms) + { + Renderer r = p.GetComponent(); + if (null != r && r.enabled + && r.sharedMaterial.renderQueue >= range.lowerBound && r.sharedMaterial.renderQueue <= range.upperBound) + { + if (r is SkinnedMeshRenderer) + { + (r as SkinnedMeshRenderer).sharedMesh.RecalculateBounds(); + } + Bounds rb = r.bounds; + if (b) + { + bounds.Encapsulate(rb); + } + else + { + bounds = rb; + b = true; + } + } + } + if (!b) + { + return false; + } + + Vector3 fwd = camera.transform.forward; + Vector3 c2b = bounds.center - camera.transform.position; + float c2bDis = Vector3.Dot(fwd, c2b); + float bs = bounds.extents.magnitude; + + minMax.x = Mathf.Max(0, c2bDis - bs); + minMax.y = c2bDis + bs; + + return true; + } public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { @@ -161,14 +217,28 @@ public class MOITFeature : ScriptableRendererFeature // prevent the use of half precision power moments as quantization relies on ROVs if (isHalfPrecision && !settings.trigonometric) isHalfPrecision = false; - + + var cmd = commandBuffer; using var scp = new ProfilingScope(cmd, profiler); var rdr = renderingData.cameraData.renderer; ref var cameraData = ref renderingData.cameraData; + + + var renderQueue = new RenderQueueRange() + { + lowerBound = settings.renderQueueMin, + upperBound = settings.renderQueueMax + }; + + if (!GetViewDepthMinMaxWithRenderQueue(cameraData.camera, renderQueue, out Vector2 viewDepthMinMax)) + { + return; + } + RenderTextureDescriptor baseDescriptor = cameraData.cameraTargetDescriptor; baseDescriptor.colorFormat = RenderTextureFormat.ARGBHalf; - + baseDescriptor.depthBufferBits = 0; RenderingUtils.ReAllocateIfNeeded(ref moitHandle, baseDescriptor, name: "_MOIT_Texture"); RenderTextureDescriptor descriptorFloat4; @@ -212,7 +282,7 @@ public class MOITFeature : ScriptableRendererFeature SortingCriteria sortingCritera = settings.sortBackToFront ? SortingCriteria.BackToFront | SortingCriteria.OptimizeStateChanges : SortingCriteria.OptimizeStateChanges; float momentBias = 0; - Vector2 viewDepthMinMax = Vector2.zero; + if (isHalfPrecision) { if (settings.momentsCount == MomentsCount._4) @@ -265,7 +335,6 @@ public class MOITFeature : ScriptableRendererFeature // setup keywords CoreUtils.SetKeyword(cmd, "_MOMENT6", settings.momentsCount == MomentsCount._6); CoreUtils.SetKeyword(cmd, "_MOMENT8", settings.momentsCount == MomentsCount._8); - //CoreUtils.SetKeyword(cmd, "_MOMENT_HALF_PRECISION", data.momentsPrecision == FloatPrecision._Half); CoreUtils.SetKeyword(cmd, "_MOMENT_HALF_PRECISION", isHalfPrecision); CoreUtils.SetKeyword(cmd, "_MOMENT_SINGLE_PRECISION", !isHalfPrecision); CoreUtils.SetKeyword(cmd, "_TRIGONOMETRIC", settings.trigonometric); @@ -273,39 +342,50 @@ public class MOITFeature : ScriptableRendererFeature Vector2 logViewDepthMinDelta = new Vector2(Mathf.Log(viewDepthMinMax.x), Mathf.Log(viewDepthMinMax.y)); logViewDepthMinDelta.y = logViewDepthMinDelta.y - logViewDepthMinDelta.x; cmd.SetGlobalVector(logViewMinDeltaID, logViewDepthMinDelta); - - if (settings.trigonometric) - { - cmd.SetGlobalVector(wrappingZoneParametersID, wrappingZoneParameters); - } - cmd.SetGlobalFloat(biasID, momentBias); - cmd.SetGlobalFloat(alphaToMaskAvailableID, 0.0f); - cmd.ClearRenderTarget(false, true, Color.clear); - var renderQueue = new RenderQueueRange() - { - lowerBound = settings.renderQueueMin, - upperBound = settings.renderQueueMax - }; + var param = new RendererListParams(renderingData.cullResults, drawSettings, new FilteringSettings(renderQueue, settings.layerMask)); - cmd.DrawRendererList(context.CreateRendererList(ref param)); - cmd.EndSample("GenerateMoments"); - cmd.BeginSample("ResolveMoments"); - if (settings.debugMakeMOITTexGlobal) { - cmd.SetGlobalTexture("_MOIT", moitHandle); + if (settings.trigonometric) + { + cmd.SetGlobalVector(wrappingZoneParametersID, wrappingZoneParameters); + } + + cmd.SetGlobalFloat(biasID, momentBias); + cmd.SetGlobalFloat(alphaToMaskAvailableID, 0.0f); + cmd.ClearRenderTarget(false, true, Color.clear); + + cmd.DrawRendererList(context.CreateRendererList(ref param)); + cmd.EndSample("GenerateMoments"); + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); } - cmd.SetRenderTarget(moitHandle, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.DontCare); - cmd.ClearRenderTarget(false, true, Color.clear); - drawSettings = CreateDrawingSettings(shaderTagIdResolveMoments, ref renderingData, sortingCritera); - param = new RendererListParams(renderingData.cullResults, drawSettings, new FilteringSettings(renderQueue, settings.layerMask)); - cmd.DrawRendererList(context.CreateRendererList(ref param)); - cmd.EndSample("ResolveMoments"); + { + cmd.BeginSample("ResolveMoments"); + if (settings.debugMakeMOITTexGlobal) + { + cmd.SetGlobalTexture("_MOIT", moitHandle); + } + cmd.SetRenderTarget(moitHandle, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.DontCare); + cmd.ClearRenderTarget(false, true, Color.clear); - cmd.BeginSample("Composite"); - cmd.Blit(moitHandle, rdr.cameraColorTargetHandle, settings.compositeMaterial, 0); - cmd.EndSample("Composite"); + drawSettings = CreateDrawingSettings(shaderTagIdResolveMoments, ref renderingData, sortingCritera); + param = new RendererListParams(renderingData.cullResults, drawSettings, new FilteringSettings(renderQueue, settings.layerMask)); + cmd.DrawRendererList(context.CreateRendererList(ref param)); + cmd.EndSample("ResolveMoments"); + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + } + + { + cmd.BeginSample("Composite"); + cmd.SetGlobalTexture("_MOIT", moitHandle); + cmd.SetRenderTarget(rdr.cameraColorTargetHandle, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.DontCare); + cmd.DrawProcedural(Matrix4x4.identity, settings.compositeMaterial, 0, MeshTopology.Triangles, 3); + cmd.EndSample("Composite"); + } + context.ExecuteCommandBuffer(cmd); cmd.Clear(); diff --git a/Assets/Scripts/Features/OIT/MOIT/MOITSimpleTranspatent.shader b/Assets/Scripts/Features/OIT/MOIT/MOITSimpleTranspatent.shader new file mode 100644 index 0000000..38a423c --- /dev/null +++ b/Assets/Scripts/Features/OIT/MOIT/MOITSimpleTranspatent.shader @@ -0,0 +1,149 @@ +Shader "OIT/MOIT/MOITSimpleTranspatent" +{ + Properties + { + _Color ("Color Tint", Color) = (1, 1, 1, 1) + _MainTex ("Main Tex", 2D) = "white" {} + + [Enum(Off, 0, Front, 1, Back, 2)] + _Cull("Cull", Float) = 2.0 + } + SubShader + { + Tags + { + "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" + } + + Pass + { + Name "GenerateMoments" + Tags + { + "LightMode" = "GenerateMoments" + } + Blend One One + ZWrite Off + Cull[_Cull] + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 4.5 + + #pragma multi_compile _MOMENT4 _MOMENT6 _MOMENT8 + #pragma multi_compile _ _TRIGONOMETRIC + #pragma shader_feature _MOMENT_HALF_PRECISION _MOMENT_SINGLE_PRECISION + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #if _MOMENT_HALF_PRECISION + #include "Quantization.hlsl" + #endif + #include "WarpDepth.hlsl" + #include "GenerateMoments.hlsl" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + half4 _Color; + + v2f vert(appdata v) + { + v2f o; + o.vertex = TransformObjectToHClip(v.vertex.xyz); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + MomentOutput frag(v2f i) + { + float4 col = tex2D(_MainTex, i.uv) * _Color; + float positionCSZ = LinearEyeDepth(i.vertex.z, _ZBufferParams); + return GenerateMoments(positionCSZ, 1 - col.a); + } + ENDHLSL + } + + + Pass + { + Name "ResolveMoments" + Tags + { + "LightMode" = "ResolveMoments" + } + Blend One One + ZWrite Off + Cull[_Cull] + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 4.5 + + #pragma multi_compile _MOMENT4 _MOMENT6 _MOMENT8 + #pragma multi_compile _ _TRIGONOMETRIC + #pragma shader_feature _MOMENT_HALF_PRECISION _MOMENT_SINGLE_PRECISION + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + + SAMPLER(sampler_LinearClamp); + #if _MOMENT_HALF_PRECISION + #include "Quantization.hlsl" + #endif + #include "MomentMath.hlsl" + #include "TrigonometricMomentMath.hlsl" + #include "WarpDepth.hlsl" + #include "ResolveMoments.hlsl" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + half4 _Color; + + + v2f vert(appdata v) + { + v2f o; + o.vertex = TransformObjectToHClip(v.vertex.xyz); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + half4 frag(v2f i) : SV_Target + { + float4 col = tex2D(_MainTex, i.uv) * _Color; + float positionCSZ = LinearEyeDepth(i.vertex.z, _ZBufferParams); + float td, tt; + _Overestimation = 0.25f; + ResolveMoments(td, tt, positionCSZ, i.vertex.xy * _B0_TexelSize.xy); + col.rgb *= col.a; + return col * td; + } + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Features/OIT/MOIT/MOITSimpleTranspatent.shader.meta b/Assets/Scripts/Features/OIT/MOIT/MOITSimpleTranspatent.shader.meta new file mode 100644 index 0000000..74fccd1 --- /dev/null +++ b/Assets/Scripts/Features/OIT/MOIT/MOITSimpleTranspatent.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1caf2d026df0a424d8af02bb3196c9bf +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent 1.mat b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent 1.mat new file mode 100644 index 0000000..3d70d99 --- /dev/null +++ b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent 1.mat @@ -0,0 +1,35 @@ +%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: OIT_MOIT_MOITSimpleTranspatent 1 + m_Shader: {fileID: 4800000, guid: 1caf2d026df0a424d8af02bb3196c9bf, 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: + - _Cull: 2 + m_Colors: + - _Color: {r: 0, g: 1, b: 0, a: 0.5019608} + m_BuildTextureStacks: [] diff --git a/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent 1.mat.meta b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent 1.mat.meta new file mode 100644 index 0000000..edcb2ae --- /dev/null +++ b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 25b200774f9c48c478a9083d61aad6c9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent.mat b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent.mat new file mode 100644 index 0000000..1490ec9 --- /dev/null +++ b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent.mat @@ -0,0 +1,35 @@ +%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: OIT_MOIT_MOITSimpleTranspatent + m_Shader: {fileID: 4800000, guid: 1caf2d026df0a424d8af02bb3196c9bf, 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: + - _Cull: 2 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 0.5019608} + m_BuildTextureStacks: [] diff --git a/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent.mat.meta b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent.mat.meta new file mode 100644 index 0000000..ec55aab --- /dev/null +++ b/Assets/Scripts/Features/OIT/MOIT/OIT_MOIT_MOITSimpleTranspatent.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e278105d913e4ff4bae176dba817a84f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/Mobile/Mobile_High_Renderer.asset b/Assets/Settings/Mobile/Mobile_High_Renderer.asset index e455224..902b4d7 100644 --- a/Assets/Settings/Mobile/Mobile_High_Renderer.asset +++ b/Assets/Settings/Mobile/Mobile_High_Renderer.asset @@ -26,7 +26,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2f83dd6eb48aa6848950f8a0f61a70de, type: 3} m_Name: LinkedListOITFeature m_EditorClassIdentifier: - m_Active: 0 + m_Active: 1 settings: RenderPassEvent: 500 ComputeShader: {fileID: 7200000, guid: eb30737736968d64e99cd6b7e2cc9efb, type: 3} @@ -469,7 +469,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 791db3d002c63d1409813c72e53105ff, type: 3} m_Name: WBOITFeature m_EditorClassIdentifier: - m_Active: 0 + m_Active: 1 settings: RenderPassEvent: 400 FilterSettings: