This commit is contained in:
StarBeats 2026-02-02 23:59:01 +08:00
parent 0bbac083b5
commit 4658e677d6
13 changed files with 1261 additions and 121 deletions

View File

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

View File

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

View File

@ -574,7 +574,7 @@ Transform:
m_GameObject: {fileID: 31312179} m_GameObject: {fileID: 31312179}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -6904,6 +6904,112 @@ Transform:
m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: a60580cd3d43b0649bf7e97e3d579db9, type: 3} m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: a60580cd3d43b0649bf7e97e3d579db9, type: 3}
m_PrefabInstance: {fileID: 388772381} m_PrefabInstance: {fileID: 388772381}
m_PrefabAsset: {fileID: 0} 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 --- !u!1001 &390621313
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -11049,6 +11155,90 @@ Transform:
m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: a60580cd3d43b0649bf7e97e3d579db9, type: 3} m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: a60580cd3d43b0649bf7e97e3d579db9, type: 3}
m_PrefabInstance: {fileID: 652551481} m_PrefabInstance: {fileID: 652551481}
m_PrefabAsset: {fileID: 0} 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 --- !u!1 &656460944
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -11149,7 +11339,7 @@ Transform:
m_GameObject: {fileID: 656460944} m_GameObject: {fileID: 656460944}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -12394,7 +12584,7 @@ Transform:
m_GameObject: {fileID: 742645875} m_GameObject: {fileID: 742645875}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -12428,7 +12618,7 @@ Transform:
m_GameObject: {fileID: 750999887} m_GameObject: {fileID: 750999887}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -15249,6 +15439,90 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: e0307081c164aaf4a90933f08206654c, type: 3} m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: e0307081c164aaf4a90933f08206654c, type: 3}
m_PrefabInstance: {fileID: 934208068} m_PrefabInstance: {fileID: 934208068}
m_PrefabAsset: {fileID: 0} 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 --- !u!1001 &945384022
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -19075,6 +19349,39 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: 7cb78e83e6bfa414f972dedaff480361, type: 3} m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: 7cb78e83e6bfa414f972dedaff480361, type: 3}
m_PrefabInstance: {fileID: 1118835857} m_PrefabInstance: {fileID: 1118835857}
m_PrefabAsset: {fileID: 0} 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 --- !u!1001 &1121022082
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -20381,6 +20688,90 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7548273142197716425, guid: 0789421bfb938644babec4c8798c163c, type: 3} m_CorrespondingSourceObject: {fileID: 7548273142197716425, guid: 0789421bfb938644babec4c8798c163c, type: 3}
m_PrefabInstance: {fileID: 1175910289} m_PrefabInstance: {fileID: 1175910289}
m_PrefabAsset: {fileID: 0} 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 --- !u!1001 &1183481623
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -22482,7 +22873,7 @@ GameObject:
- component: {fileID: 1335403878} - component: {fileID: 1335403878}
- component: {fileID: 1335403877} - component: {fileID: 1335403877}
m_Layer: 0 m_Layer: 0
m_Name: fish_red_tail_barracuda_LOD0 (1) m_Name: fish_red_tail_barracuda_LOD0_mb
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -22509,7 +22900,7 @@ MeshRenderer:
m_RendererPriority: 0 m_RendererPriority: 0
m_Materials: m_Materials:
- {fileID: 2100000, guid: 82f089674b537fe42b84f66f22c4b13f, type: 2} - {fileID: 2100000, guid: 82f089674b537fe42b84f66f22c4b13f, type: 2}
- {fileID: 2100000, guid: 872b4d67fd3bbd14caa9aea720bd1b75, type: 2} - {fileID: 2100000, guid: dfaf32ec40aff924392d95a8db39d63a, type: 2}
m_StaticBatchInfo: m_StaticBatchInfo:
firstSubMesh: 0 firstSubMesh: 0
subMeshCount: 0 subMeshCount: 0
@ -22548,7 +22939,7 @@ Transform:
m_GameObject: {fileID: 1335403876} m_GameObject: {fileID: 1335403876}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0.000000018075937, y: -0.5621158, z: -0.000000012285431, w: 0.8270586} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -24361,7 +24752,7 @@ Transform:
m_GameObject: {fileID: 1534542423} m_GameObject: {fileID: 1534542423}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -29247,7 +29638,7 @@ Transform:
m_GameObject: {fileID: 1829397597} m_GameObject: {fileID: 1829397597}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -31030,6 +31421,112 @@ Transform:
m_CorrespondingSourceObject: {fileID: 6162762049935161941, guid: 0527f0839c423a4449c9836c1ca41db5, type: 3} m_CorrespondingSourceObject: {fileID: 6162762049935161941, guid: 0527f0839c423a4449c9836c1ca41db5, type: 3}
m_PrefabInstance: {fileID: 1909011707} m_PrefabInstance: {fileID: 1909011707}
m_PrefabAsset: {fileID: 0} 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 --- !u!1001 &1913663551
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -33671,7 +34168,7 @@ Transform:
m_GameObject: {fileID: 2128448438} m_GameObject: {fileID: 2128448438}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 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_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
@ -36323,8 +36820,12 @@ SceneRoots:
- {fileID: 219676304} - {fileID: 219676304}
- {fileID: 1187884597} - {fileID: 1187884597}
- {fileID: 2083859764} - {fileID: 2083859764}
- {fileID: 655989236}
- {fileID: 1335403879} - {fileID: 1335403879}
- {fileID: 1179210695}
- {fileID: 940609255}
- {fileID: 1829397601} - {fileID: 1829397601}
- {fileID: 332117873} - {fileID: 332117873}
- {fileID: 2128448439} - {fileID: 2128448439}
- {fileID: 31312180} - {fileID: 31312180}
- {fileID: 1120789876}

View File

@ -4,6 +4,9 @@ Shader "OIT/LLOIT/LLOITSimpleTranspatent"
{ {
_Color("Color", Color) = (1,1,1,1) _Color("Color", Color) = (1,1,1,1)
_MainTex("MainTex", 2D) = "white" {} _MainTex("MainTex", 2D) = "white" {}
[Enum(Off, 0, Front, 1, Back, 2)]
_Cull("Cull", Float) = 2.0
} }
SubShader SubShader
{ {
@ -15,7 +18,7 @@ Shader "OIT/LLOIT/LLOITSimpleTranspatent"
ZTest LEqual ZTest LEqual
ZWrite Off ZWrite Off
ColorMask 0 ColorMask 0
Cull Off Cull [_Cull]
CGPROGRAM CGPROGRAM
#pragma vertex vert #pragma vertex vert

View File

@ -6,32 +6,52 @@ Shader "Hidden/MOITComposite"
} }
HLSLINCLUDE 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) struct v2f
#include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" {
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
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
#if UNITY_UV_STARTS_AT_TOP
uv = float2((vertexID << 1) & 2, 1.0 - (vertexID & 2));
#endif
o.vertex = pos;
o.uv = uv;
return o;
}
#ifdef _MOMENT_SINGLE_PRECISION #ifdef _MOMENT_SINGLE_PRECISION
TEXTURE2D_FLOAT (_B0); TEXTURE2D_FLOAT (_B0);
#else #else
TEXTURE2D_HALF(_B0); TEXTURE2D_HALF(_B0);
#endif #endif
//TEXTURE2D(_MOIT); // _MOIT is _BlitTexture since we don't need to sample screen tex (alpha blended)
// sampler_PointClamp sampler_LinearClamp // TEXTURE2D(_MOIT_Texture);
#define singleSampler sampler_LinearClamp SAMPLER(sampler_LinearClamp);
half4 MOITComposite(Varyings input) : SV_Target TEXTURE2D_HALF(_MOIT);
SAMPLER(sampler_MOIT);
half4 MOITComposite(v2f input) : SV_Target
{ {
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); half4 moit = SAMPLE_TEXTURE2D(_MOIT, sampler_MOIT, input.uv);
//float4 moit = SAMPLE_TEXTURE2D(_BlitTexture, singleSampler, input.texcoord);
half4 moit = SAMPLE_TEXTURE2D(_BlitTexture, singleSampler, input.texcoord);
#ifdef _MOMENT_SINGLE_PRECISION #ifdef _MOMENT_SINGLE_PRECISION
float b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; float b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.uv).r;
#else #else
half b0 = SAMPLE_TEXTURE2D(_B0, singleSampler, input.texcoord).r; half b0 = SAMPLE_TEXTURE2D(_B0, sampler_LinearClamp, input.uv).r;
#endif #endif
moit.rgb /= moit.a; moit.rgb /= moit.a;
@ -40,15 +60,17 @@ Shader "Hidden/MOITComposite"
// TODO: explore why the non shader graph tmpro shader writes negatives values in moit texture (in game view only) // 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)); return half4(max(moit.rgb, 0.0), exp(-b0));
#else #else
return half4(moit.rgb, exp(-b0)); return half4(max(0,moit.rgb), exp(-b0));
#endif #endif
} }
ENDHLSL ENDHLSL
SubShader SubShader
{ {
Tags{ "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } Tags
{
"RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline"
}
ZWrite Off Cull Off ZWrite Off Cull Off
Pass Pass
@ -59,12 +81,13 @@ Shader "Hidden/MOITComposite"
Blend OneMinusSrcAlpha SrcAlpha Blend OneMinusSrcAlpha SrcAlpha
HLSLPROGRAM HLSLPROGRAM
#pragma vertex vert
#pragma vertex Vert
#pragma fragment MOITComposite #pragma fragment MOITComposite
#pragma shader_feature _CATCHBIASERRORS_ON #pragma enable_d3d11_debug_symbols
#pragma multi_compile_fragment _MOMENT_HALF_PRECISION __MOMENT_SINGLE_PRECISION
#pragma shader_feature _CATCHBIASERRORS_ON
ENDHLSL ENDHLSL
} }

View File

@ -101,6 +101,11 @@ public class MOITFeature : ScriptableRendererFeature
public void Dispose() public void Dispose()
{ {
moitHandle?.Release();
b0?.Release();
b1?.Release();
b2?.Release();
commandBuffer?.Release();
} }
RTHandle moitHandle; RTHandle moitHandle;
@ -149,6 +154,57 @@ public class MOITFeature : ScriptableRendererFeature
Vector4 wrappingZoneParameters = ComputeWrappingZoneParameters(); 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<Renderer>();
if (null == coms || 0 == coms.Length)
{
return false;
}
foreach (var p in coms)
{
Renderer r = p.GetComponent<Renderer>();
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) public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{ {
var biasSettings = featureSettings.biasSettings; var biasSettings = featureSettings.biasSettings;
@ -162,13 +218,27 @@ public class MOITFeature : ScriptableRendererFeature
if (isHalfPrecision && !settings.trigonometric) if (isHalfPrecision && !settings.trigonometric)
isHalfPrecision = false; isHalfPrecision = false;
var cmd = commandBuffer; var cmd = commandBuffer;
using var scp = new ProfilingScope(cmd, profiler); using var scp = new ProfilingScope(cmd, profiler);
var rdr = renderingData.cameraData.renderer; var rdr = renderingData.cameraData.renderer;
ref var cameraData = ref renderingData.cameraData; 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; RenderTextureDescriptor baseDescriptor = cameraData.cameraTargetDescriptor;
baseDescriptor.colorFormat = RenderTextureFormat.ARGBHalf; baseDescriptor.colorFormat = RenderTextureFormat.ARGBHalf;
baseDescriptor.depthBufferBits = 0;
RenderingUtils.ReAllocateIfNeeded(ref moitHandle, baseDescriptor, name: "_MOIT_Texture"); RenderingUtils.ReAllocateIfNeeded(ref moitHandle, baseDescriptor, name: "_MOIT_Texture");
RenderTextureDescriptor descriptorFloat4; RenderTextureDescriptor descriptorFloat4;
@ -212,7 +282,7 @@ public class MOITFeature : ScriptableRendererFeature
SortingCriteria sortingCritera = settings.sortBackToFront ? SortingCriteria.BackToFront | SortingCriteria.OptimizeStateChanges : SortingCriteria.OptimizeStateChanges; SortingCriteria sortingCritera = settings.sortBackToFront ? SortingCriteria.BackToFront | SortingCriteria.OptimizeStateChanges : SortingCriteria.OptimizeStateChanges;
float momentBias = 0; float momentBias = 0;
Vector2 viewDepthMinMax = Vector2.zero;
if (isHalfPrecision) if (isHalfPrecision)
{ {
if (settings.momentsCount == MomentsCount._4) if (settings.momentsCount == MomentsCount._4)
@ -265,7 +335,6 @@ public class MOITFeature : ScriptableRendererFeature
// setup keywords // setup keywords
CoreUtils.SetKeyword(cmd, "_MOMENT6", settings.momentsCount == MomentsCount._6); CoreUtils.SetKeyword(cmd, "_MOMENT6", settings.momentsCount == MomentsCount._6);
CoreUtils.SetKeyword(cmd, "_MOMENT8", settings.momentsCount == MomentsCount._8); 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_HALF_PRECISION", isHalfPrecision);
CoreUtils.SetKeyword(cmd, "_MOMENT_SINGLE_PRECISION", !isHalfPrecision); CoreUtils.SetKeyword(cmd, "_MOMENT_SINGLE_PRECISION", !isHalfPrecision);
CoreUtils.SetKeyword(cmd, "_TRIGONOMETRIC", settings.trigonometric); CoreUtils.SetKeyword(cmd, "_TRIGONOMETRIC", settings.trigonometric);
@ -274,22 +343,25 @@ public class MOITFeature : ScriptableRendererFeature
logViewDepthMinDelta.y = logViewDepthMinDelta.y - logViewDepthMinDelta.x; logViewDepthMinDelta.y = logViewDepthMinDelta.y - logViewDepthMinDelta.x;
cmd.SetGlobalVector(logViewMinDeltaID, logViewDepthMinDelta); cmd.SetGlobalVector(logViewMinDeltaID, logViewDepthMinDelta);
var param = new RendererListParams(renderingData.cullResults, drawSettings, new FilteringSettings(renderQueue, settings.layerMask));
{
if (settings.trigonometric) if (settings.trigonometric)
{ {
cmd.SetGlobalVector(wrappingZoneParametersID, wrappingZoneParameters); cmd.SetGlobalVector(wrappingZoneParametersID, wrappingZoneParameters);
} }
cmd.SetGlobalFloat(biasID, momentBias); cmd.SetGlobalFloat(biasID, momentBias);
cmd.SetGlobalFloat(alphaToMaskAvailableID, 0.0f); cmd.SetGlobalFloat(alphaToMaskAvailableID, 0.0f);
cmd.ClearRenderTarget(false, true, Color.clear); 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.DrawRendererList(context.CreateRendererList(ref param));
cmd.EndSample("GenerateMoments"); cmd.EndSample("GenerateMoments");
context.ExecuteCommandBuffer(cmd);
cmd.Clear();
}
{
cmd.BeginSample("ResolveMoments"); cmd.BeginSample("ResolveMoments");
if (settings.debugMakeMOITTexGlobal) if (settings.debugMakeMOITTexGlobal)
{ {
@ -302,10 +374,18 @@ public class MOITFeature : ScriptableRendererFeature
param = new RendererListParams(renderingData.cullResults, drawSettings, new FilteringSettings(renderQueue, settings.layerMask)); param = new RendererListParams(renderingData.cullResults, drawSettings, new FilteringSettings(renderQueue, settings.layerMask));
cmd.DrawRendererList(context.CreateRendererList(ref param)); cmd.DrawRendererList(context.CreateRendererList(ref param));
cmd.EndSample("ResolveMoments"); cmd.EndSample("ResolveMoments");
context.ExecuteCommandBuffer(cmd);
cmd.Clear();
}
{
cmd.BeginSample("Composite"); cmd.BeginSample("Composite");
cmd.Blit(moitHandle, rdr.cameraColorTargetHandle, settings.compositeMaterial, 0); 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"); cmd.EndSample("Composite");
}
context.ExecuteCommandBuffer(cmd); context.ExecuteCommandBuffer(cmd);
cmd.Clear(); cmd.Clear();

View File

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

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 1caf2d026df0a424d8af02bb3196c9bf
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

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

View File

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

View File

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

View File

@ -26,7 +26,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 2f83dd6eb48aa6848950f8a0f61a70de, type: 3} m_Script: {fileID: 11500000, guid: 2f83dd6eb48aa6848950f8a0f61a70de, type: 3}
m_Name: LinkedListOITFeature m_Name: LinkedListOITFeature
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Active: 0 m_Active: 1
settings: settings:
RenderPassEvent: 500 RenderPassEvent: 500
ComputeShader: {fileID: 7200000, guid: eb30737736968d64e99cd6b7e2cc9efb, type: 3} ComputeShader: {fileID: 7200000, guid: eb30737736968d64e99cd6b7e2cc9efb, type: 3}
@ -469,7 +469,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 791db3d002c63d1409813c72e53105ff, type: 3} m_Script: {fileID: 11500000, guid: 791db3d002c63d1409813c72e53105ff, type: 3}
m_Name: WBOITFeature m_Name: WBOITFeature
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Active: 0 m_Active: 1
settings: settings:
RenderPassEvent: 400 RenderPassEvent: 400
FilterSettings: FilterSettings: