commit
509961fd52
359 changed files with 10303 additions and 29806 deletions
File diff suppressed because it is too large
Load Diff
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: bb52e262d07b2d44d867f77a1be49439 |
|
||||||
folderAsset: yes |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
@ -1,52 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!21 &2100000 |
|
||||||
Material: |
|
||||||
serializedVersion: 3 |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 0} |
|
||||||
m_Name: cube360 |
|
||||||
m_Shader: {fileID: 4800000, guid: 1ca6555d94ddb204c87e9fe549085b3c, type: 3} |
|
||||||
m_ShaderKeywords: |
|
||||||
- STEREO_NONE |
|
||||||
m_CustomRenderQueue: -1 |
|
||||||
m_SavedProperties: |
|
||||||
serializedVersion: 2 |
|
||||||
m_TexEnvs: |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _MainTex |
|
||||||
second: |
|
||||||
m_Texture: {fileID: 0} |
|
||||||
m_Scale: {x: 1, y: 1} |
|
||||||
m_Offset: {x: 0, y: 0} |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _ChromaTex |
|
||||||
second: |
|
||||||
m_Texture: {fileID: 0} |
|
||||||
m_Scale: {x: 1, y: 1} |
|
||||||
m_Offset: {x: 0, y: 0} |
|
||||||
m_Floats: |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: Stereo |
|
||||||
second: 0 |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _StereoDebug |
|
||||||
second: 0 |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _ApplyGamma |
|
||||||
second: 0 |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _UseYpCbCr |
|
||||||
second: 0 |
|
||||||
m_Colors: |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _Color |
|
||||||
second: {r: 1, g: 1, b: 1, a: 1} |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 528f5620ff3f26b428baf78fbf6ed558 |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,28 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!21 &2100000 |
|
||||||
Material: |
|
||||||
serializedVersion: 3 |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 0} |
|
||||||
m_Name: sphere360 |
|
||||||
m_Shader: {fileID: 4800000, guid: 46b84ca7ab6291e4fb6c57ac48d01e8f, type: 3} |
|
||||||
m_ShaderKeywords: [] |
|
||||||
m_CustomRenderQueue: -1 |
|
||||||
m_SavedProperties: |
|
||||||
serializedVersion: 2 |
|
||||||
m_TexEnvs: |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _MainTex |
|
||||||
second: |
|
||||||
m_Texture: {fileID: 0} |
|
||||||
m_Scale: {x: 1, y: 1} |
|
||||||
m_Offset: {x: 0, y: 0} |
|
||||||
m_Floats: {} |
|
||||||
m_Colors: |
|
||||||
data: |
|
||||||
first: |
|
||||||
name: _Color |
|
||||||
second: {r: 1, g: 1, b: 1, a: 1} |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 17b8b08ed638ac04a9e726c6ec0cea35 |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 107a33f32a4dd694ab9ed5c0c7a035c6 |
|
||||||
folderAsset: yes |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
@ -1,195 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!1 &149002 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 449002} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: 360CubeVideo |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!1 &149004 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 449004} |
|
||||||
- 114: {fileID: 11449004} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: AVPro Video Media Player |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!1 &149006 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 449006} |
|
||||||
- 23: {fileID: 2388718} |
|
||||||
- 33: {fileID: 3388718} |
|
||||||
- 114: {fileID: 11488718} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: Cube |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!4 &449002 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149002} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: |
|
||||||
- {fileID: 449006} |
|
||||||
- {fileID: 449004} |
|
||||||
m_Father: {fileID: 0} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!4 &449004 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149004} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 449002} |
|
||||||
m_RootOrder: 1 |
|
||||||
--- !u!4 &449006 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149006} |
|
||||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: -4.37113883e-08} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 10, y: 10, z: 10} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 449002} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!23 &2388718 |
|
||||||
Renderer: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149006} |
|
||||||
m_Enabled: 1 |
|
||||||
m_CastShadows: 0 |
|
||||||
m_ReceiveShadows: 0 |
|
||||||
m_LightmapIndex: 255 |
|
||||||
m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} |
|
||||||
m_Materials: |
|
||||||
- {fileID: 2100000, guid: 528f5620ff3f26b428baf78fbf6ed558, type: 2} |
|
||||||
m_SubsetIndices: |
|
||||||
m_StaticBatchRoot: {fileID: 0} |
|
||||||
m_UseLightProbes: 0 |
|
||||||
m_LightProbeAnchor: {fileID: 0} |
|
||||||
m_ScaleInLightmap: 1 |
|
||||||
m_SortingLayerID: 0 |
|
||||||
m_SortingOrder: 0 |
|
||||||
--- !u!33 &3388718 |
|
||||||
MeshFilter: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149006} |
|
||||||
m_Mesh: {fileID: 0} |
|
||||||
--- !u!114 &11449004 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149004} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
m_VideoLocation: 2 |
|
||||||
m_VideoPath: |
|
||||||
m_AutoOpen: 1 |
|
||||||
m_AutoStart: 1 |
|
||||||
m_Loop: 1 |
|
||||||
m_Volume: 1 |
|
||||||
m_Muted: 0 |
|
||||||
m_PlaybackRate: 1 |
|
||||||
m_DebugGui: 0 |
|
||||||
m_Persistent: 0 |
|
||||||
m_StereoPacking: 0 |
|
||||||
m_DisplayDebugStereoColorTint: 0 |
|
||||||
m_FilterMode: 1 |
|
||||||
m_WrapMode: 1 |
|
||||||
m_AnisoLevel: 0 |
|
||||||
m_events: |
|
||||||
m_PersistentCalls: |
|
||||||
m_Calls: [] |
|
||||||
m_TypeName: RenderHeads.Media.AVProVideo.MediaPlayerEvent, Assembly-CSharp, Version=0.0.0.0, |
|
||||||
Culture=neutral, PublicKeyToken=null |
|
||||||
_optionsWindows: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
forceDirectShowApi: 0 |
|
||||||
forceAudioOutputDeviceName: |
|
||||||
_optionsMacOSX: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsIOS: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsTVOS: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsAndroid: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
--- !u!114 &11488718 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 149006} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 683e7713922f8044c81bf497a0b5887e, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
_material: {fileID: 2100000, guid: 528f5620ff3f26b428baf78fbf6ed558, type: 2} |
|
||||||
_mediaPlayer: {fileID: 11449004} |
|
||||||
expansion_coeff: 1.00999999 |
|
||||||
--- !u!1001 &100100000 |
|
||||||
Prefab: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
serializedVersion: 2 |
|
||||||
m_Modification: |
|
||||||
m_TransformParent: {fileID: 0} |
|
||||||
m_Modifications: [] |
|
||||||
m_RemovedComponents: [] |
|
||||||
m_ParentPrefab: {fileID: 0} |
|
||||||
m_RootGameObject: {fileID: 149002} |
|
||||||
m_IsPrefabParent: 1 |
|
||||||
m_IsExploded: 1 |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 5cc7e20810735fc46ab7b17491990099 |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,224 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!1 &127526 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 427526} |
|
||||||
- 33: {fileID: 3327526} |
|
||||||
- 23: {fileID: 2327526} |
|
||||||
- 114: {fileID: 11404242} |
|
||||||
- 114: {fileID: 11476996} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: Sphere |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!1 &198420 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 498420} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: 360SphereVideo |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!1 &198424 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 498424} |
|
||||||
- 114: {fileID: 11498420} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: AVPro Video Media Player |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!4 &427526 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 127526} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 5, y: 5, z: 5} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 498420} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!4 &498420 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 198420} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: |
|
||||||
- {fileID: 427526} |
|
||||||
- {fileID: 498424} |
|
||||||
m_Father: {fileID: 0} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!4 &498424 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 198424} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 498420} |
|
||||||
m_RootOrder: 1 |
|
||||||
--- !u!23 &2327526 |
|
||||||
Renderer: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 127526} |
|
||||||
m_Enabled: 1 |
|
||||||
m_CastShadows: 0 |
|
||||||
m_ReceiveShadows: 0 |
|
||||||
m_LightmapIndex: 255 |
|
||||||
m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} |
|
||||||
m_Materials: |
|
||||||
- {fileID: 2100000, guid: 17b8b08ed638ac04a9e726c6ec0cea35, type: 2} |
|
||||||
m_SubsetIndices: |
|
||||||
m_StaticBatchRoot: {fileID: 0} |
|
||||||
m_UseLightProbes: 0 |
|
||||||
m_LightProbeAnchor: {fileID: 0} |
|
||||||
m_ScaleInLightmap: 1 |
|
||||||
m_SortingLayerID: 0 |
|
||||||
m_SortingOrder: 0 |
|
||||||
--- !u!33 &3327526 |
|
||||||
MeshFilter: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 127526} |
|
||||||
m_Mesh: {fileID: 4300000, guid: c8b055314efcb4b4dbd29f97a847fc4c, type: 2} |
|
||||||
--- !u!114 &11404242 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 127526} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 4ed685e8c5f1f584aa28b32dcf9bdab1, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
_camera: {fileID: 0} |
|
||||||
_renderer: {fileID: 2327526} |
|
||||||
--- !u!114 &11476996 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 127526} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: f6d1977a52888584496b1acc7e998011, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
_offset: {x: 0, y: 0} |
|
||||||
_scale: {x: 1, y: 1} |
|
||||||
_mesh: {fileID: 2327526} |
|
||||||
_media: {fileID: 11498420} |
|
||||||
_defaultTexture: {fileID: 0} |
|
||||||
--- !u!114 &11498420 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 198424} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
m_VideoLocation: 2 |
|
||||||
m_VideoPath: |
|
||||||
m_AutoOpen: 1 |
|
||||||
m_AutoStart: 1 |
|
||||||
m_Loop: 1 |
|
||||||
m_Volume: 1 |
|
||||||
m_Muted: 0 |
|
||||||
m_PlaybackRate: 1 |
|
||||||
m_DebugGui: 0 |
|
||||||
m_Persistent: 0 |
|
||||||
m_StereoPacking: 0 |
|
||||||
m_AlphaPacking: 0 |
|
||||||
m_DisplayDebugStereoColorTint: 0 |
|
||||||
m_FilterMode: 1 |
|
||||||
m_WrapMode: 1 |
|
||||||
m_AnisoLevel: 0 |
|
||||||
m_events: |
|
||||||
m_PersistentCalls: |
|
||||||
m_Calls: [] |
|
||||||
m_TypeName: RenderHeads.Media.AVProVideo.MediaPlayerEvent, Assembly-CSharp, Version=0.0.0.0, |
|
||||||
Culture=neutral, PublicKeyToken=null |
|
||||||
_optionsWindows: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
forceDirectShowApi: 0 |
|
||||||
forceAudioOutputDeviceName: |
|
||||||
_optionsMacOSX: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsIOS: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsTVOS: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsAndroid: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsWindowsPhone: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsWindowsUWP: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
_optionsWebGL: |
|
||||||
overridePath: 0 |
|
||||||
pathLocation: 2 |
|
||||||
path: |
|
||||||
--- !u!1001 &100100000 |
|
||||||
Prefab: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
serializedVersion: 2 |
|
||||||
m_Modification: |
|
||||||
m_TransformParent: {fileID: 0} |
|
||||||
m_Modifications: [] |
|
||||||
m_RemovedComponents: [] |
|
||||||
m_ParentPrefab: {fileID: 0} |
|
||||||
m_RootGameObject: {fileID: 198420} |
|
||||||
m_IsPrefabParent: 1 |
|
||||||
m_IsExploded: 1 |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 5a12218ea7e5b7a4e8b89d25e07d237d |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,113 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!1 &162392 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 462392} |
|
||||||
- 114: {fileID: 11462392} |
|
||||||
- 82: {fileID: 8262392} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: AudioOutput |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!4 &462392 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 162392} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 0} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!82 &8262392 |
|
||||||
AudioSource: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 162392} |
|
||||||
m_Enabled: 1 |
|
||||||
serializedVersion: 3 |
|
||||||
m_audioClip: {fileID: 0} |
|
||||||
m_PlayOnAwake: 0 |
|
||||||
m_Volume: 1 |
|
||||||
m_Pitch: 1 |
|
||||||
Loop: 0 |
|
||||||
Mute: 0 |
|
||||||
Priority: 128 |
|
||||||
DopplerLevel: 1 |
|
||||||
MinDistance: 1 |
|
||||||
MaxDistance: 500 |
|
||||||
Pan2D: 0 |
|
||||||
rolloffMode: 0 |
|
||||||
BypassEffects: 0 |
|
||||||
BypassListenerEffects: 0 |
|
||||||
BypassReverbZones: 0 |
|
||||||
rolloffCustomCurve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- time: 0 |
|
||||||
value: 1 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 0 |
|
||||||
- time: 1 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 0 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
panLevelCustomCurve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- time: 0 |
|
||||||
value: 1 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 0 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
spreadCustomCurve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- time: 0 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 0 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
--- !u!114 &11462392 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 162392} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 3b05a64a5de3f8546bf586f42e37b979, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
_mediaPlayer: {fileID: 0} |
|
||||||
--- !u!1001 &100100000 |
|
||||||
Prefab: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
serializedVersion: 2 |
|
||||||
m_Modification: |
|
||||||
m_TransformParent: {fileID: 0} |
|
||||||
m_Modifications: [] |
|
||||||
m_RemovedComponents: [] |
|
||||||
m_ParentPrefab: {fileID: 0} |
|
||||||
m_RootGameObject: {fileID: 162392} |
|
||||||
m_IsPrefabParent: 1 |
|
||||||
m_IsExploded: 1 |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 23fac3371501b864a8a2468ac0bef6f3 |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,174 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!1 &166464 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 466464} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: BackgroundVideo |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!1 &166466 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 466466} |
|
||||||
- 33: {fileID: 3366464} |
|
||||||
- 23: {fileID: 2366464} |
|
||||||
- 114: {fileID: 11466464} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: Background |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!1 &166468 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 466468} |
|
||||||
- 114: {fileID: 11466466} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: AVPro Video Media Player |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!4 &466464 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166464} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: |
|
||||||
- {fileID: 466468} |
|
||||||
- {fileID: 466466} |
|
||||||
m_Father: {fileID: 0} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!4 &466466 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166466} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 466464} |
|
||||||
m_RootOrder: 1 |
|
||||||
--- !u!4 &466468 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166468} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 466464} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!23 &2366464 |
|
||||||
Renderer: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166466} |
|
||||||
m_Enabled: 1 |
|
||||||
m_CastShadows: 0 |
|
||||||
m_ReceiveShadows: 0 |
|
||||||
m_LightmapIndex: 255 |
|
||||||
m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} |
|
||||||
m_Materials: |
|
||||||
- {fileID: 2100000, guid: 7ccf4b555441d554484bbe799cb1c834, type: 2} |
|
||||||
m_SubsetIndices: |
|
||||||
m_StaticBatchRoot: {fileID: 0} |
|
||||||
m_UseLightProbes: 0 |
|
||||||
m_LightProbeAnchor: {fileID: 0} |
|
||||||
m_ScaleInLightmap: 1 |
|
||||||
m_SortingLayerID: 0 |
|
||||||
m_SortingOrder: 0 |
|
||||||
--- !u!33 &3366464 |
|
||||||
MeshFilter: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166466} |
|
||||||
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} |
|
||||||
--- !u!114 &11466464 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166466} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: f6d1977a52888584496b1acc7e998011, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
_mesh: {fileID: 2366464} |
|
||||||
_media: {fileID: 11466466} |
|
||||||
_defaultTexture: {fileID: 0} |
|
||||||
--- !u!114 &11466466 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 166468} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
m_VideoLocation: 2 |
|
||||||
m_VideoPath: |
|
||||||
m_AutoOpen: 1 |
|
||||||
m_AutoStart: 1 |
|
||||||
m_Loop: 1 |
|
||||||
m_Volume: 1 |
|
||||||
m_Muted: 0 |
|
||||||
m_DebugGui: 0 |
|
||||||
m_events: |
|
||||||
m_PersistentCalls: |
|
||||||
m_Calls: [] |
|
||||||
m_TypeName: RenderHeads.Media.AVProVideo.MediaPlayerEvent, Assembly-CSharp, Version=0.0.0.0, |
|
||||||
Culture=neutral, PublicKeyToken=null |
|
||||||
m_platformVideoPathOverride: 0000000000 |
|
||||||
m_platformVideoPath: |
|
||||||
- |
|
||||||
- |
|
||||||
- |
|
||||||
- |
|
||||||
- |
|
||||||
m_platformVideoLocation: 0000000000000000000000000000000000000000 |
|
||||||
--- !u!1001 &100100000 |
|
||||||
Prefab: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
serializedVersion: 2 |
|
||||||
m_Modification: |
|
||||||
m_TransformParent: {fileID: 0} |
|
||||||
m_Modifications: [] |
|
||||||
m_RemovedComponents: [] |
|
||||||
m_ParentPrefab: {fileID: 0} |
|
||||||
m_RootGameObject: {fileID: 166464} |
|
||||||
m_IsPrefabParent: 1 |
|
||||||
m_IsExploded: 1 |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 5dbef7d4930a98e4186b12a1b5f2cda6 |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,82 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!1 &192192 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 4 |
|
||||||
m_Component: |
|
||||||
- 4: {fileID: 492192} |
|
||||||
- 114: {fileID: 11492190} |
|
||||||
- 114: {fileID: 11492192} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: FullscreenVideo |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!4 &492192 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 192192} |
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 0} |
|
||||||
m_RootOrder: 0 |
|
||||||
--- !u!114 &11492190 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 192192} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
m_VideoPath: |
|
||||||
m_AutoOpen: 1 |
|
||||||
m_AutoStart: 1 |
|
||||||
m_Loop: 0 |
|
||||||
m_Volume: 1 |
|
||||||
m_Muted: 0 |
|
||||||
m_DebugGui: 0 |
|
||||||
--- !u!114 &11492192 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 192192} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 75f3b319d2d69934d8bf545ab45c918d, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
_mediaPlayer: {fileID: 11492190} |
|
||||||
_scaleMode: 2 |
|
||||||
_color: {r: 1, g: 1, b: 1, a: 1} |
|
||||||
_alphaBlend: 0 |
|
||||||
_fullScreen: 1 |
|
||||||
_depth: 0 |
|
||||||
_x: 0 |
|
||||||
_y: 0 |
|
||||||
_width: 1 |
|
||||||
_height: 1 |
|
||||||
--- !u!1001 &100100000 |
|
||||||
Prefab: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
serializedVersion: 2 |
|
||||||
m_Modification: |
|
||||||
m_TransformParent: {fileID: 0} |
|
||||||
m_Modifications: [] |
|
||||||
m_RemovedComponents: [] |
|
||||||
m_ParentPrefab: {fileID: 0} |
|
||||||
m_RootGameObject: {fileID: 192192} |
|
||||||
m_IsPrefabParent: 1 |
|
||||||
m_IsExploded: 1 |
|
||||||
@ -1,4 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 84fd971487e311c45a6573a72503271c |
|
||||||
NativeFormatImporter: |
|
||||||
userData: |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 870241155d4fedc4a86fa89eb85ae5c3 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1449047212 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
||||||
|
Before Width: | Height: | Size: 34 KiB |
@ -1,47 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 8bef6179fcd26aa4c89b766c6b95490a |
|
||||||
TextureImporter: |
|
||||||
fileIDToRecycleName: {} |
|
||||||
serializedVersion: 2 |
|
||||||
mipmaps: |
|
||||||
mipMapMode: 0 |
|
||||||
enableMipMap: 1 |
|
||||||
linearTexture: 0 |
|
||||||
correctGamma: 0 |
|
||||||
fadeOut: 0 |
|
||||||
borderMipMap: 0 |
|
||||||
mipMapFadeDistanceStart: 1 |
|
||||||
mipMapFadeDistanceEnd: 3 |
|
||||||
bumpmap: |
|
||||||
convertToNormalMap: 0 |
|
||||||
externalNormalMap: 0 |
|
||||||
heightScale: .25 |
|
||||||
normalMapFilter: 0 |
|
||||||
isReadable: 0 |
|
||||||
grayScaleToAlpha: 0 |
|
||||||
generateCubemap: 0 |
|
||||||
seamlessCubemap: 0 |
|
||||||
textureFormat: -1 |
|
||||||
maxTextureSize: 2048 |
|
||||||
textureSettings: |
|
||||||
filterMode: 2 |
|
||||||
aniso: -1 |
|
||||||
mipBias: -1 |
|
||||||
wrapMode: 1 |
|
||||||
nPOTScale: 0 |
|
||||||
lightmap: 0 |
|
||||||
compressionQuality: 50 |
|
||||||
spriteMode: 0 |
|
||||||
spriteExtrude: 1 |
|
||||||
spriteMeshType: 1 |
|
||||||
alignment: 0 |
|
||||||
spritePivot: {x: .5, y: .5} |
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|
||||||
spritePixelsToUnits: 100 |
|
||||||
alphaIsTransparency: 0 |
|
||||||
textureType: 5 |
|
||||||
buildTargetSettings: [] |
|
||||||
spriteSheet: |
|
||||||
sprites: [] |
|
||||||
spritePackingTag: |
|
||||||
userData: |
|
||||||
|
Before Width: | Height: | Size: 34 KiB |
@ -1,47 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 855eae39e9698944daf581d77f6cef3c |
|
||||||
TextureImporter: |
|
||||||
fileIDToRecycleName: {} |
|
||||||
serializedVersion: 2 |
|
||||||
mipmaps: |
|
||||||
mipMapMode: 0 |
|
||||||
enableMipMap: 1 |
|
||||||
linearTexture: 0 |
|
||||||
correctGamma: 0 |
|
||||||
fadeOut: 0 |
|
||||||
borderMipMap: 0 |
|
||||||
mipMapFadeDistanceStart: 1 |
|
||||||
mipMapFadeDistanceEnd: 3 |
|
||||||
bumpmap: |
|
||||||
convertToNormalMap: 0 |
|
||||||
externalNormalMap: 0 |
|
||||||
heightScale: .25 |
|
||||||
normalMapFilter: 0 |
|
||||||
isReadable: 0 |
|
||||||
grayScaleToAlpha: 0 |
|
||||||
generateCubemap: 0 |
|
||||||
seamlessCubemap: 0 |
|
||||||
textureFormat: -1 |
|
||||||
maxTextureSize: 2048 |
|
||||||
textureSettings: |
|
||||||
filterMode: 2 |
|
||||||
aniso: -1 |
|
||||||
mipBias: -1 |
|
||||||
wrapMode: 1 |
|
||||||
nPOTScale: 0 |
|
||||||
lightmap: 0 |
|
||||||
compressionQuality: 50 |
|
||||||
spriteMode: 0 |
|
||||||
spriteExtrude: 1 |
|
||||||
spriteMeshType: 1 |
|
||||||
alignment: 0 |
|
||||||
spritePivot: {x: .5, y: .5} |
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|
||||||
spritePixelsToUnits: 100 |
|
||||||
alphaIsTransparency: 0 |
|
||||||
textureType: 5 |
|
||||||
buildTargetSettings: [] |
|
||||||
spriteSheet: |
|
||||||
sprites: [] |
|
||||||
spritePackingTag: |
|
||||||
userData: |
|
||||||
|
Before Width: | Height: | Size: 27 KiB |
@ -1,47 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: bb83b41b53a59874692b83eab5873998 |
|
||||||
TextureImporter: |
|
||||||
fileIDToRecycleName: {} |
|
||||||
serializedVersion: 2 |
|
||||||
mipmaps: |
|
||||||
mipMapMode: 0 |
|
||||||
enableMipMap: 1 |
|
||||||
linearTexture: 1 |
|
||||||
correctGamma: 1 |
|
||||||
fadeOut: 0 |
|
||||||
borderMipMap: 0 |
|
||||||
mipMapFadeDistanceStart: 1 |
|
||||||
mipMapFadeDistanceEnd: 3 |
|
||||||
bumpmap: |
|
||||||
convertToNormalMap: 0 |
|
||||||
externalNormalMap: 0 |
|
||||||
heightScale: .25 |
|
||||||
normalMapFilter: 0 |
|
||||||
isReadable: 0 |
|
||||||
grayScaleToAlpha: 0 |
|
||||||
generateCubemap: 0 |
|
||||||
seamlessCubemap: 0 |
|
||||||
textureFormat: -3 |
|
||||||
maxTextureSize: 1024 |
|
||||||
textureSettings: |
|
||||||
filterMode: -1 |
|
||||||
aniso: 1 |
|
||||||
mipBias: -1 |
|
||||||
wrapMode: 0 |
|
||||||
nPOTScale: 1 |
|
||||||
lightmap: 0 |
|
||||||
compressionQuality: 50 |
|
||||||
spriteMode: 0 |
|
||||||
spriteExtrude: 1 |
|
||||||
spriteMeshType: 1 |
|
||||||
alignment: 0 |
|
||||||
spritePivot: {x: .5, y: .5} |
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|
||||||
spritePixelsToUnits: 100 |
|
||||||
alphaIsTransparency: 0 |
|
||||||
textureType: 5 |
|
||||||
buildTargetSettings: [] |
|
||||||
spriteSheet: |
|
||||||
sprites: [] |
|
||||||
spritePackingTag: |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: e04bc3dc12a5117428fce7e0f1245bd9 |
|
||||||
folderAsset: yes |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 71eb101954888314ba2a8b9fe74e1cae |
|
||||||
timeCreated: 1447418752 |
|
||||||
licenseType: Store |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 38b28fc6a6d12d144bf6d6de820d83ce |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 8ebaafdbf44b0b9489f20bc27374d187 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 73f378cafe7b4a745907b70e76bb3259 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: d1085d25f9ef09b4c91188f9f99f37a2 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 06b0cff0150d7eb41b3d269f7e11daa3 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 751148eda67f7b34fbd51bfb7951084f |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: f9f51999155859b419ff715c8127688a |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,141 +0,0 @@ |
|||||||
Shader "AVProVideo/UI/Stereo" |
|
||||||
{ |
|
||||||
Properties |
|
||||||
{ |
|
||||||
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} |
|
||||||
[PerRendererData] _ChromaTex ("Sprite Texture", 2D) = "white" {} |
|
||||||
_Color ("Tint", Color) = (1,1,1,1) |
|
||||||
|
|
||||||
_StencilComp ("Stencil Comparison", Float) = 8 |
|
||||||
_Stencil ("Stencil ID", Float) = 0 |
|
||||||
_StencilOp ("Stencil Operation", Float) = 0 |
|
||||||
_StencilWriteMask ("Stencil Write Mask", Float) = 255 |
|
||||||
_StencilReadMask ("Stencil Read Mask", Float) = 255 |
|
||||||
|
|
||||||
_ColorMask ("Color Mask", Float) = 15 |
|
||||||
|
|
||||||
[KeywordEnum(None, Top_Bottom, Left_Right)] Stereo("Stereo Mode", Float) = 0 |
|
||||||
[Toggle(STEREO_DEBUG)] _StereoDebug("Stereo Debug Tinting", Float) = 0 |
|
||||||
[Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 |
|
||||||
[Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 |
|
||||||
} |
|
||||||
|
|
||||||
SubShader |
|
||||||
{ |
|
||||||
Tags |
|
||||||
{ |
|
||||||
"Queue"="Transparent" |
|
||||||
"IgnoreProjector"="True" |
|
||||||
"RenderType"="Transparent" |
|
||||||
"PreviewType"="Plane" |
|
||||||
"CanUseSpriteAtlas"="True" |
|
||||||
} |
|
||||||
|
|
||||||
Stencil |
|
||||||
{ |
|
||||||
Ref [_Stencil] |
|
||||||
Comp [_StencilComp] |
|
||||||
Pass [_StencilOp] |
|
||||||
ReadMask [_StencilReadMask] |
|
||||||
WriteMask [_StencilWriteMask] |
|
||||||
} |
|
||||||
|
|
||||||
Cull Off |
|
||||||
Lighting Off |
|
||||||
ZWrite Off |
|
||||||
ZTest [unity_GUIZTestMode] |
|
||||||
Fog { Mode Off } |
|
||||||
Blend SrcAlpha OneMinusSrcAlpha |
|
||||||
ColorMask [_ColorMask] |
|
||||||
|
|
||||||
Pass |
|
||||||
{ |
|
||||||
CGPROGRAM |
|
||||||
#pragma vertex vert |
|
||||||
#pragma fragment frag |
|
||||||
#pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT |
|
||||||
|
|
||||||
// TODO: Change XX_OFF to __ for Unity 5.0 and above |
|
||||||
// this was just added for Unity 4.x compatibility as __ causes |
|
||||||
// Android and iOS builds to fail the shader |
|
||||||
#pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA |
|
||||||
#pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG |
|
||||||
#pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR |
|
||||||
|
|
||||||
#include "UnityCG.cginc" |
|
||||||
#include "AVProVideo.cginc" |
|
||||||
|
|
||||||
struct appdata_t |
|
||||||
{ |
|
||||||
float4 vertex : POSITION; |
|
||||||
float4 color : COLOR; |
|
||||||
float2 texcoord : TEXCOORD0; |
|
||||||
}; |
|
||||||
|
|
||||||
struct v2f |
|
||||||
{ |
|
||||||
float4 vertex : SV_POSITION; |
|
||||||
fixed4 color : COLOR; |
|
||||||
half2 texcoord : TEXCOORD0; |
|
||||||
}; |
|
||||||
|
|
||||||
uniform fixed4 _Color; |
|
||||||
uniform sampler2D _MainTex; |
|
||||||
#if USE_YPCBCR |
|
||||||
uniform sampler2D _ChromaTex; |
|
||||||
uniform float4x4 _YpCbCrTransform; |
|
||||||
#endif |
|
||||||
uniform float4 _MainTex_ST; |
|
||||||
uniform float4 _MainTex_TexelSize; |
|
||||||
uniform float3 _cameraPosition; |
|
||||||
|
|
||||||
v2f vert(appdata_t IN) |
|
||||||
{ |
|
||||||
v2f OUT; |
|
||||||
|
|
||||||
OUT.vertex = XFormObjectToClip(IN.vertex); |
|
||||||
|
|
||||||
#ifdef UNITY_HALF_TEXEL_OFFSET |
|
||||||
OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); |
|
||||||
#endif |
|
||||||
|
|
||||||
OUT.texcoord.xy = IN.texcoord.xy; |
|
||||||
|
|
||||||
#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT |
|
||||||
float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), _MainTex_ST.y < 0.0); |
|
||||||
OUT.texcoord.xy *= scaleOffset.xy; |
|
||||||
OUT.texcoord.xy += scaleOffset.zw; |
|
||||||
#endif |
|
||||||
|
|
||||||
OUT.color = IN.color * _Color; |
|
||||||
|
|
||||||
#if STEREO_DEBUG |
|
||||||
OUT.color *= GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); |
|
||||||
#endif |
|
||||||
return OUT; |
|
||||||
} |
|
||||||
|
|
||||||
fixed4 frag(v2f IN) : SV_Target |
|
||||||
{ |
|
||||||
#if USE_YPCBCR |
|
||||||
#if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 |
|
||||||
float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord).r, tex2D(_ChromaTex, IN.texcoord).rg); |
|
||||||
#else |
|
||||||
float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord).r, tex2D(_ChromaTex, IN.texcoord).ra); |
|
||||||
#endif |
|
||||||
half4 color = half4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); |
|
||||||
#else |
|
||||||
half4 color = tex2D(_MainTex, IN.texcoord.xy); |
|
||||||
#endif |
|
||||||
#if APPLY_GAMMA |
|
||||||
color.rgb = GammaToLinear(color.rgb); |
|
||||||
#endif |
|
||||||
|
|
||||||
color *= IN.color; |
|
||||||
return color; |
|
||||||
} |
|
||||||
|
|
||||||
ENDCG |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 018fe741dec71f14bb43801a31a07303 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,174 +0,0 @@ |
|||||||
Shader "AVProVideo/UI/Transparent Packed" |
|
||||||
{ |
|
||||||
Properties |
|
||||||
{ |
|
||||||
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} |
|
||||||
[PerRendererData] _ChromaTex ("Sprite Texture", 2D) = "white" {} |
|
||||||
_Color ("Tint", Color) = (1,1,1,1) |
|
||||||
|
|
||||||
_StencilComp ("Stencil Comparison", Float) = 8 |
|
||||||
_Stencil ("Stencil ID", Float) = 0 |
|
||||||
_StencilOp ("Stencil Operation", Float) = 0 |
|
||||||
_StencilWriteMask ("Stencil Write Mask", Float) = 255 |
|
||||||
_StencilReadMask ("Stencil Read Mask", Float) = 255 |
|
||||||
|
|
||||||
_ColorMask ("Color Mask", Float) = 15 |
|
||||||
|
|
||||||
_VertScale("Vertical Scale", Range(-1, 1)) = 1.0 |
|
||||||
|
|
||||||
[KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 |
|
||||||
[Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 |
|
||||||
[Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 |
|
||||||
} |
|
||||||
|
|
||||||
SubShader |
|
||||||
{ |
|
||||||
Tags |
|
||||||
{ |
|
||||||
"Queue"="Transparent" |
|
||||||
"IgnoreProjector"="True" |
|
||||||
"RenderType"="Transparent" |
|
||||||
"PreviewType"="Plane" |
|
||||||
"CanUseSpriteAtlas"="True" |
|
||||||
} |
|
||||||
|
|
||||||
Stencil |
|
||||||
{ |
|
||||||
Ref [_Stencil] |
|
||||||
Comp [_StencilComp] |
|
||||||
Pass [_StencilOp] |
|
||||||
ReadMask [_StencilReadMask] |
|
||||||
WriteMask [_StencilWriteMask] |
|
||||||
} |
|
||||||
|
|
||||||
Cull Off |
|
||||||
Lighting Off |
|
||||||
ZWrite Off |
|
||||||
ZTest [unity_GUIZTestMode] |
|
||||||
Fog { Mode Off } |
|
||||||
Blend SrcAlpha OneMinusSrcAlpha |
|
||||||
ColorMask [_ColorMask] |
|
||||||
|
|
||||||
Pass |
|
||||||
{ |
|
||||||
CGPROGRAM |
|
||||||
#pragma vertex vert |
|
||||||
#pragma fragment frag |
|
||||||
#pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT |
|
||||||
|
|
||||||
// TODO: Change XX_OFF to __ for Unity 5.0 and above |
|
||||||
// this was just added for Unity 4.x compatibility as __ causes |
|
||||||
// Android and iOS builds to fail the shader |
|
||||||
#pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA |
|
||||||
#pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG |
|
||||||
#pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR |
|
||||||
|
|
||||||
#if APPLY_GAMMA |
|
||||||
//#pragma target 3.0 |
|
||||||
#endif |
|
||||||
#include "UnityCG.cginc" |
|
||||||
// TODO: once we drop support for Unity 4.x then we can include this |
|
||||||
//#include "UnityUI.cginc" |
|
||||||
#include "AVProVideo.cginc" |
|
||||||
|
|
||||||
struct appdata_t |
|
||||||
{ |
|
||||||
float4 vertex : POSITION; |
|
||||||
float4 color : COLOR; |
|
||||||
float2 texcoord : TEXCOORD0; |
|
||||||
}; |
|
||||||
|
|
||||||
struct v2f |
|
||||||
{ |
|
||||||
float4 vertex : SV_POSITION; |
|
||||||
fixed4 color : COLOR; |
|
||||||
half4 texcoord : TEXCOORD0; |
|
||||||
float4 worldPosition : TEXCOORD1; |
|
||||||
}; |
|
||||||
|
|
||||||
uniform fixed4 _Color; |
|
||||||
uniform sampler2D _MainTex; |
|
||||||
#if USE_YPCBCR |
|
||||||
uniform sampler2D _ChromaTex; |
|
||||||
uniform float4x4 _YpCbCrTransform; |
|
||||||
#endif |
|
||||||
uniform float4 _MainTex_TexelSize; |
|
||||||
uniform float _VertScale; |
|
||||||
uniform float4 _ClipRect; |
|
||||||
|
|
||||||
#if UNITY_VERSION >= 520 |
|
||||||
inline float UnityGet2DClipping (in float2 position, in float4 clipRect) |
|
||||||
{ |
|
||||||
float2 inside = step(clipRect.xy, position.xy) * step(position.xy, clipRect.zw); |
|
||||||
return inside.x * inside.y; |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
v2f vert(appdata_t IN) |
|
||||||
{ |
|
||||||
v2f OUT; |
|
||||||
OUT.worldPosition = IN.vertex; |
|
||||||
|
|
||||||
OUT.vertex = XFormObjectToClip(IN.vertex); |
|
||||||
|
|
||||||
#ifdef UNITY_HALF_TEXEL_OFFSET |
|
||||||
OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); |
|
||||||
#endif |
|
||||||
|
|
||||||
OUT.texcoord.xy = IN.texcoord.xy; |
|
||||||
|
|
||||||
// Horrible hack to undo the scale transform to fit into our UV packing layout logic... |
|
||||||
if (_VertScale < 0.0) |
|
||||||
{ |
|
||||||
OUT.texcoord.y = 1.0 - OUT.texcoord.y; |
|
||||||
} |
|
||||||
|
|
||||||
OUT.texcoord = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, OUT.texcoord.xy, _VertScale < 0.0); |
|
||||||
|
|
||||||
OUT.color = IN.color * _Color; |
|
||||||
return OUT; |
|
||||||
} |
|
||||||
|
|
||||||
fixed4 frag(v2f IN) : SV_Target |
|
||||||
{ |
|
||||||
#if USE_YPCBCR |
|
||||||
#if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 |
|
||||||
float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord.xy).r, tex2D(_ChromaTex, IN.texcoord.xy).rg); |
|
||||||
#else |
|
||||||
float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord.xy).r, tex2D(_ChromaTex, IN.texcoord.xy).ra); |
|
||||||
#endif |
|
||||||
half4 color = half4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0f); |
|
||||||
#else |
|
||||||
// Sample RGB |
|
||||||
half4 color = tex2D(_MainTex, IN.texcoord.xy); |
|
||||||
#endif |
|
||||||
#if APPLY_GAMMA |
|
||||||
color.rgb = GammaToLinear(color.rgb); |
|
||||||
#endif |
|
||||||
|
|
||||||
#if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT |
|
||||||
#if USE_YPCBCR |
|
||||||
color.a = tex2D(_MainTex, IN.texcoord.zw).r; |
|
||||||
#else |
|
||||||
// Sample the alpha |
|
||||||
half4 alpha = tex2D(_MainTex, IN.texcoord.zw); |
|
||||||
#if APPLY_GAMMA |
|
||||||
alpha.rgb = GammaToLinear(alpha.rgb); |
|
||||||
#endif |
|
||||||
color.a = (alpha.r + alpha.g + alpha.b) / 3.0; |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
color *= IN.color; |
|
||||||
|
|
||||||
#if UNITY_VERSION >= 520 |
|
||||||
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); |
|
||||||
#endif |
|
||||||
clip(color.a - 0.001); |
|
||||||
|
|
||||||
return color; |
|
||||||
} |
|
||||||
|
|
||||||
ENDCG |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: f32079bbb2560394abb63e40e1d53da7 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: eb44a525a7e2c6640a8cd90fd7fabce4 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 0ed1fb9218ad96f49acfdb428d5b5aab |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 1ca6555d94ddb204c87e9fe549085b3c |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: a22a9f37cda6a3b48be178ec57376024 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 08ccc6021f136814494572dcad0c489d |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 867ec56bd96e5504a95f991314cd5706 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,201 +0,0 @@ |
|||||||
Shader "AVProVideo/VR/InsideSphere Unlit (stereo+fog)" |
|
||||||
{ |
|
||||||
Properties |
|
||||||
{ |
|
||||||
_MainTex ("Texture", 2D) = "black" {} |
|
||||||
_ChromaTex("Chroma", 2D) = "white" {} |
|
||||||
|
|
||||||
[KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo ("Stereo Mode", Float) = 0 |
|
||||||
[KeywordEnum(None, Left, Right)] ForceEye ("Force Eye Mode", Float) = 0 |
|
||||||
[Toggle(STEREO_DEBUG)] _StereoDebug ("Stereo Debug Tinting", Float) = 0 |
|
||||||
[KeywordEnum(None, EquiRect180)] Layout("Layout", Float) = 0 |
|
||||||
[Toggle(HIGH_QUALITY)] _HighQuality ("High Quality", Float) = 0 |
|
||||||
[Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 |
|
||||||
[Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 |
|
||||||
} |
|
||||||
SubShader |
|
||||||
{ |
|
||||||
Tags { "RenderType"="Opaque" "IgnoreProjector" = "True" "Queue" = "Background" } |
|
||||||
ZWrite On |
|
||||||
//ZTest Always |
|
||||||
Cull Front |
|
||||||
Lighting Off |
|
||||||
|
|
||||||
Pass |
|
||||||
{ |
|
||||||
CGPROGRAM |
|
||||||
#include "UnityCG.cginc" |
|
||||||
#include "AVProVideo.cginc" |
|
||||||
#if HIGH_QUALITY || APPLY_GAMMA |
|
||||||
#pragma target 3.0 |
|
||||||
#endif |
|
||||||
#pragma vertex vert |
|
||||||
#pragma fragment frag |
|
||||||
|
|
||||||
//#define STEREO_DEBUG 1 |
|
||||||
//#define HIGH_QUALITY 1 |
|
||||||
|
|
||||||
#pragma multi_compile_fog |
|
||||||
#pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV |
|
||||||
|
|
||||||
// TODO: Change XX_OFF to __ for Unity 5.0 and above |
|
||||||
// this was just added for Unity 4.x compatibility as __ causes |
|
||||||
// Android and iOS builds to fail the shader |
|
||||||
#pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG |
|
||||||
#pragma multi_compile FORCEEYE_NONE FORCEEYE_LEFT FORCEEYE_RIGHT |
|
||||||
#pragma multi_compile HIGH_QUALITY_OFF HIGH_QUALITY |
|
||||||
#pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA |
|
||||||
#pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR |
|
||||||
#pragma multi_compile LAYOUT_NONE LAYOUT_EQUIRECT180 |
|
||||||
|
|
||||||
struct appdata |
|
||||||
{ |
|
||||||
float4 vertex : POSITION; // vertex position |
|
||||||
#if HIGH_QUALITY |
|
||||||
float3 normal : NORMAL; |
|
||||||
#else |
|
||||||
float2 uv : TEXCOORD0; // texture coordinate |
|
||||||
#if STEREO_CUSTOM_UV |
|
||||||
float2 uv2 : TEXCOORD1; // Custom uv set for right eye (left eye is in TEXCOORD0) |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
struct v2f |
|
||||||
{ |
|
||||||
float4 vertex : SV_POSITION; // clip space position |
|
||||||
#if HIGH_QUALITY |
|
||||||
float3 normal : TEXCOORD0; |
|
||||||
|
|
||||||
#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT |
|
||||||
float4 scaleOffset : TEXCOORD1; // texture coordinate |
|
||||||
#if UNITY_VERSION >= 500 |
|
||||||
UNITY_FOG_COORDS(2) |
|
||||||
#endif |
|
||||||
#else |
|
||||||
#if UNITY_VERSION >= 500 |
|
||||||
UNITY_FOG_COORDS(1) |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
#else |
|
||||||
float2 uv : TEXCOORD0; // texture coordinate |
|
||||||
|
|
||||||
#if UNITY_VERSION >= 500 |
|
||||||
UNITY_FOG_COORDS(1) |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#if STEREO_DEBUG |
|
||||||
float4 tint : COLOR; |
|
||||||
#endif |
|
||||||
}; |
|
||||||
|
|
||||||
uniform sampler2D _MainTex; |
|
||||||
#if USE_YPCBCR |
|
||||||
uniform sampler2D _ChromaTex; |
|
||||||
uniform float4x4 _YpCbCrTransform; |
|
||||||
#endif |
|
||||||
uniform float4 _MainTex_ST; |
|
||||||
uniform float3 _cameraPosition; |
|
||||||
|
|
||||||
v2f vert (appdata v) |
|
||||||
{ |
|
||||||
v2f o; |
|
||||||
|
|
||||||
o.vertex = XFormObjectToClip(v.vertex); |
|
||||||
|
|
||||||
#if !HIGH_QUALITY |
|
||||||
o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex); |
|
||||||
#if LAYOUT_EQUIRECT180 |
|
||||||
o.uv.x = ((o.uv.x - 0.5) * 2.0) + 0.5; |
|
||||||
#endif |
|
||||||
o.uv.xy = float2(1.0-o.uv.x, o.uv.y); |
|
||||||
#endif |
|
||||||
|
|
||||||
#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT |
|
||||||
float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), _MainTex_ST.y < 0.0); |
|
||||||
|
|
||||||
#if !HIGH_QUALITY |
|
||||||
o.uv.xy *= scaleOffset.xy; |
|
||||||
o.uv.xy += scaleOffset.zw; |
|
||||||
#else |
|
||||||
o.scaleOffset = scaleOffset; |
|
||||||
#endif |
|
||||||
#elif STEREO_CUSTOM_UV && !HIGH_QUALITY |
|
||||||
if (!IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)) |
|
||||||
{ |
|
||||||
o.uv.xy = TRANSFORM_TEX(v.uv2, _MainTex); |
|
||||||
o.uv.xy = float2(1.0 - o.uv.x, o.uv.y); |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
#if HIGH_QUALITY |
|
||||||
o.normal = v.normal; |
|
||||||
#endif |
|
||||||
|
|
||||||
#if STEREO_DEBUG |
|
||||||
o.tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UNITY_VERSION >= 500 |
|
||||||
UNITY_TRANSFER_FOG(o, o.vertex); |
|
||||||
#endif |
|
||||||
|
|
||||||
return o; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
fixed4 frag (v2f i) : SV_Target |
|
||||||
{ |
|
||||||
float2 uv; |
|
||||||
|
|
||||||
#if HIGH_QUALITY |
|
||||||
float3 n = normalize(i.normal); |
|
||||||
|
|
||||||
float M_1_PI = 1.0 / 3.1415926535897932384626433832795; |
|
||||||
float M_1_2PI = 1.0 / 6.283185307179586476925286766559; |
|
||||||
uv.x = 0.5 - atan2(n.z, n.x) * M_1_2PI; |
|
||||||
uv.y = 0.5 - asin(-n.y) * M_1_PI; |
|
||||||
uv.x += 0.75; |
|
||||||
uv.x = fmod(uv.x, 1.0); |
|
||||||
//uv.x = uv.x % 1.0; |
|
||||||
uv.xy = TRANSFORM_TEX(uv, _MainTex); |
|
||||||
#if LAYOUT_EQUIRECT180 |
|
||||||
uv.x = ((uv.x - 0.5) * 2.0) + 0.5; |
|
||||||
#endif |
|
||||||
#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT |
|
||||||
uv.xy *= i.scaleOffset.xy; |
|
||||||
uv.xy += i.scaleOffset.zw; |
|
||||||
#endif |
|
||||||
#else |
|
||||||
uv = i.uv; |
|
||||||
#endif |
|
||||||
#if USE_YPCBCR |
|
||||||
#if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 |
|
||||||
float3 ypcbcr = float3(tex2D(_MainTex, uv).r, tex2D(_ChromaTex, uv).rg); |
|
||||||
#else |
|
||||||
float3 ypcbcr = float3(tex2D(_MainTex, uv).r, tex2D(_ChromaTex, uv).ra); |
|
||||||
#endif |
|
||||||
fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); |
|
||||||
#else |
|
||||||
fixed4 col = tex2D(_MainTex, uv); |
|
||||||
#endif |
|
||||||
#if APPLY_GAMMA |
|
||||||
col.rgb = GammaToLinear(col.rgb); |
|
||||||
#endif |
|
||||||
|
|
||||||
#if STEREO_DEBUG |
|
||||||
col *= i.tint; |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UNITY_VERSION >= 500 |
|
||||||
UNITY_APPLY_FOG(i.fogCoord, col); |
|
||||||
#endif |
|
||||||
|
|
||||||
return fixed4(col.rgb, 1.0); |
|
||||||
} |
|
||||||
ENDCG |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 46b84ca7ab6291e4fb6c57ac48d01e8f |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 5bcf2893fead7a14a8c737d1bb6cdd09 |
|
||||||
ShaderImporter: |
|
||||||
defaultTextures: [] |
|
||||||
userData: |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 48d8a0fb8367d5e40b369691646ad6e3 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1438695622 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 40d7664ce355730488a96ff5305f1b5d |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1438698284 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
||||||
@ -1,283 +0,0 @@ |
|||||||
#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#elif UNITY_IOS || UNITY_ANDROID |
|
||||||
#if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) |
|
||||||
#define UNITY_HELPATTRIB |
|
||||||
#endif |
|
||||||
|
|
||||||
using UnityEngine; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Sets up a material to display the video from a MediaPlayer |
|
||||||
/// </summary> |
|
||||||
[AddComponentMenu("AVPro Video/Apply To Material", 300)] |
|
||||||
#if UNITY_HELPATTRIB |
|
||||||
[HelpURL("http://renderheads.com/product/avpro-video/")] |
|
||||||
#endif |
|
||||||
public class ApplyToMaterial : MonoBehaviour |
|
||||||
{ |
|
||||||
public Vector2 _offset = Vector2.zero; |
|
||||||
public Vector2 _scale = Vector2.one; |
|
||||||
public Material _material; |
|
||||||
public string _texturePropertyName; |
|
||||||
public MediaPlayer _media; |
|
||||||
public Texture2D _defaultTexture; |
|
||||||
|
|
||||||
private Texture _originalTexture; |
|
||||||
private Vector2 _originalScale = Vector2.one; |
|
||||||
private Vector2 _originalOffset = Vector2.zero; |
|
||||||
|
|
||||||
private static int _propStereo; |
|
||||||
private static int _propAlphaPack; |
|
||||||
private static int _propApplyGamma; |
|
||||||
private static int _propLayout; |
|
||||||
|
|
||||||
private const string PropChromaTexName = "_ChromaTex"; |
|
||||||
private static int _propChromaTex; |
|
||||||
|
|
||||||
private const string PropYpCbCrTransformName = "_YpCbCrTransform"; |
|
||||||
private static int _propYpCbCrTransform; |
|
||||||
|
|
||||||
private const string PropUseYpCbCrName = "_UseYpCbCr"; |
|
||||||
private static int _propUseYpCbCr; |
|
||||||
|
|
||||||
private void Awake() |
|
||||||
{ |
|
||||||
if (_propStereo == 0) |
|
||||||
{ |
|
||||||
_propStereo = Shader.PropertyToID("Stereo"); |
|
||||||
} |
|
||||||
if (_propAlphaPack == 0) |
|
||||||
{ |
|
||||||
_propAlphaPack = Shader.PropertyToID("AlphaPack"); |
|
||||||
} |
|
||||||
if (_propApplyGamma == 0) |
|
||||||
{ |
|
||||||
_propApplyGamma = Shader.PropertyToID("_ApplyGamma"); |
|
||||||
} |
|
||||||
if (_propLayout == 0) |
|
||||||
{ |
|
||||||
_propLayout = Shader.PropertyToID("Layout"); |
|
||||||
} |
|
||||||
if (_propChromaTex == 0) |
|
||||||
{ |
|
||||||
_propChromaTex = Shader.PropertyToID(PropChromaTexName); |
|
||||||
} |
|
||||||
if (_propYpCbCrTransform == 0) |
|
||||||
{ |
|
||||||
_propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); |
|
||||||
} |
|
||||||
if (_propUseYpCbCr == 0) |
|
||||||
{ |
|
||||||
_propUseYpCbCr = Shader.PropertyToID(PropUseYpCbCrName); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() |
|
||||||
private void LateUpdate() |
|
||||||
{ |
|
||||||
bool applied = false; |
|
||||||
|
|
||||||
if (_media != null && _media.TextureProducer != null) |
|
||||||
{ |
|
||||||
int planeCount = _media.m_Resample ? 1 : _media.TextureProducer.GetTextureCount(); |
|
||||||
for (int plane = 0; plane < planeCount; ++plane) |
|
||||||
{ |
|
||||||
Texture resamplerTex = _media.FrameResampler == null || _media.FrameResampler.OutputTexture == null ? null : _media.FrameResampler.OutputTexture[plane]; |
|
||||||
Texture texture = _media.m_Resample ? resamplerTex : _media.TextureProducer.GetTexture(plane); |
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
ApplyMapping(texture, _media.TextureProducer.RequiresVerticalFlip(), plane); |
|
||||||
applied = true; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (!applied) |
|
||||||
{ |
|
||||||
if (_material != null && _material.HasProperty(_propUseYpCbCr)) |
|
||||||
{ |
|
||||||
_material.DisableKeyword("USE_YPCBCR"); |
|
||||||
} |
|
||||||
ApplyMapping(_defaultTexture, false); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void ApplyMapping(Texture texture, bool requiresYFlip, int plane = 0) |
|
||||||
{ |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
if (plane == 0) |
|
||||||
{ |
|
||||||
if (string.IsNullOrEmpty(_texturePropertyName)) |
|
||||||
{ |
|
||||||
_material.mainTexture = texture; |
|
||||||
|
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
_material.mainTextureScale = new Vector2(_scale.x, -_scale.y); |
|
||||||
_material.mainTextureOffset = Vector2.up + _offset; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.mainTextureScale = _scale; |
|
||||||
_material.mainTextureOffset = _offset; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.SetTexture(_texturePropertyName, texture); |
|
||||||
|
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
_material.SetTextureScale(_texturePropertyName, new Vector2(_scale.x, -_scale.y)); |
|
||||||
_material.SetTextureOffset(_texturePropertyName, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.SetTextureScale(_texturePropertyName, _scale); |
|
||||||
_material.SetTextureOffset(_texturePropertyName, _offset); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
else if (plane == 1) |
|
||||||
{ |
|
||||||
if (_material.HasProperty(_propUseYpCbCr)) |
|
||||||
{ |
|
||||||
_material.EnableKeyword("USE_YPCBCR"); |
|
||||||
} |
|
||||||
if (_material.HasProperty(_propChromaTex)) |
|
||||||
{ |
|
||||||
_material.SetTexture(_propChromaTex, texture); |
|
||||||
_material.SetMatrix(_propYpCbCrTransform, _media.TextureProducer.GetYpCbCrTransform()); |
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
_material.SetTextureScale(_propChromaTex, new Vector2(_scale.x, -_scale.y)); |
|
||||||
_material.SetTextureOffset(_propChromaTex, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.SetTextureScale(_propChromaTex, _scale); |
|
||||||
_material.SetTextureOffset(_propChromaTex, _offset); |
|
||||||
} |
|
||||||
#else |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
_material.SetTextureScale(PropChromaTexName, new Vector2(_scale.x, -_scale.y)); |
|
||||||
_material.SetTextureOffset(PropChromaTexName, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.SetTextureScale(PropChromaTexName, _scale); |
|
||||||
_material.SetTextureOffset(PropChromaTexName, _offset); |
|
||||||
} |
|
||||||
#endif |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (_media != null) |
|
||||||
{ |
|
||||||
// Apply changes for layout |
|
||||||
if (_material.HasProperty(_propLayout)) |
|
||||||
{ |
|
||||||
Helper.SetupLayoutMaterial(_material, _media.VideoLayoutMapping); |
|
||||||
} |
|
||||||
// Apply changes for stereo videos |
|
||||||
if (_material.HasProperty(_propStereo)) |
|
||||||
{ |
|
||||||
Helper.SetupStereoMaterial(_material, _media.m_StereoPacking, _media.m_DisplayDebugStereoColorTint); |
|
||||||
} |
|
||||||
// Apply changes for alpha videos |
|
||||||
if (_material.HasProperty(_propAlphaPack)) |
|
||||||
{ |
|
||||||
Helper.SetupAlphaPackedMaterial(_material, _media.m_AlphaPacking); |
|
||||||
} |
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
// Apply gamma |
|
||||||
if (_material.HasProperty(_propApplyGamma) && _media.Info != null) |
|
||||||
{ |
|
||||||
Helper.SetupGammaMaterial(_material, _media.Info.PlayerSupportsLinearColorSpace()); |
|
||||||
} |
|
||||||
#else |
|
||||||
_propApplyGamma |= 0; |
|
||||||
#endif |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void Start() |
|
||||||
{ |
|
||||||
SaveProperties(); |
|
||||||
LateUpdate(); |
|
||||||
} |
|
||||||
|
|
||||||
private void OnEnable() |
|
||||||
{ |
|
||||||
SaveProperties(); |
|
||||||
LateUpdate(); |
|
||||||
} |
|
||||||
|
|
||||||
private void OnDisable() |
|
||||||
{ |
|
||||||
RestoreProperties(); |
|
||||||
} |
|
||||||
|
|
||||||
private void SaveProperties() |
|
||||||
{ |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
if (string.IsNullOrEmpty(_texturePropertyName)) |
|
||||||
{ |
|
||||||
_originalTexture = _material.mainTexture; |
|
||||||
_originalScale = _material.mainTextureScale; |
|
||||||
_originalOffset = _material.mainTextureOffset; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_originalTexture = _material.GetTexture(_texturePropertyName); |
|
||||||
_originalScale = _material.GetTextureScale(_texturePropertyName); |
|
||||||
_originalOffset = _material.GetTextureOffset(_texturePropertyName); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void RestoreProperties() |
|
||||||
{ |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
if (string.IsNullOrEmpty(_texturePropertyName)) |
|
||||||
{ |
|
||||||
_material.mainTexture = _originalTexture; |
|
||||||
_material.mainTextureScale = _originalScale; |
|
||||||
_material.mainTextureOffset = _originalOffset; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.SetTexture(_texturePropertyName, _originalTexture); |
|
||||||
_material.SetTextureScale(_texturePropertyName, _originalScale); |
|
||||||
_material.SetTextureOffset(_texturePropertyName, _originalOffset); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: d2feedce2e2e63647b8f875ec0894a15 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,384 +0,0 @@ |
|||||||
#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#elif UNITY_IOS || UNITY_ANDROID |
|
||||||
#if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) |
|
||||||
#define UNITY_HELPATTRIB |
|
||||||
#endif |
|
||||||
|
|
||||||
using UnityEngine; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Sets up a mesh to display the video from a MediaPlayer |
|
||||||
/// </summary> |
|
||||||
[AddComponentMenu("AVPro Video/Apply To Mesh", 300)] |
|
||||||
#if UNITY_HELPATTRIB |
|
||||||
[HelpURL("http://renderheads.com/product/avpro-video/")] |
|
||||||
#endif |
|
||||||
public class ApplyToMesh : MonoBehaviour |
|
||||||
{ |
|
||||||
// TODO: add specific material / material index to target in the mesh if there are multiple materials |
|
||||||
|
|
||||||
[Header("Media Source")] |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private MediaPlayer _media = null; |
|
||||||
|
|
||||||
public MediaPlayer Player |
|
||||||
{ |
|
||||||
get { return _media; } |
|
||||||
set { ChangeMediaPlayer(value); } |
|
||||||
} |
|
||||||
|
|
||||||
[Tooltip("Default texture to display when the video texture is preparing")] |
|
||||||
[SerializeField] |
|
||||||
private Texture2D _defaultTexture = null; |
|
||||||
|
|
||||||
public Texture2D DefaultTexture |
|
||||||
{ |
|
||||||
get { return _defaultTexture; } |
|
||||||
set { if (_defaultTexture != value) { _defaultTexture = value; _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
[Space(8f)] |
|
||||||
[Header("Renderer Target")] |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private Renderer _mesh = null; |
|
||||||
|
|
||||||
public Renderer MeshRenderer |
|
||||||
{ |
|
||||||
get { return _mesh; } |
|
||||||
set { if (_mesh != value) { _mesh = value; _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private string _texturePropertyName = "_MainTex"; |
|
||||||
|
|
||||||
public string TexturePropertyName |
|
||||||
{ |
|
||||||
get { return _texturePropertyName; } |
|
||||||
set |
|
||||||
{ |
|
||||||
if (_texturePropertyName != value) |
|
||||||
{ |
|
||||||
_texturePropertyName = value; |
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
_propTexture = Shader.PropertyToID(_texturePropertyName); |
|
||||||
#endif |
|
||||||
_isDirty = true; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private Vector2 _offset = Vector2.zero; |
|
||||||
|
|
||||||
public Vector2 Offset |
|
||||||
{ |
|
||||||
get { return _offset; } |
|
||||||
set { if (_offset != value) { _offset = value; _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private Vector2 _scale = Vector2.one; |
|
||||||
|
|
||||||
public Vector2 Scale |
|
||||||
{ |
|
||||||
get { return _scale; } |
|
||||||
set { if (_scale != value) { _scale = value; _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
private bool _isDirty = false; |
|
||||||
private Texture _lastTextureApplied; |
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
private int _propTexture; |
|
||||||
#endif |
|
||||||
|
|
||||||
private static int _propStereo; |
|
||||||
private static int _propAlphaPack; |
|
||||||
private static int _propApplyGamma; |
|
||||||
private static int _propLayout; |
|
||||||
|
|
||||||
private const string PropChromaTexName = "_ChromaTex"; |
|
||||||
private static int _propChromaTex; |
|
||||||
private const string PropYpCbCrTransformName = "_YpCbCrTransform"; |
|
||||||
private static int _propYpCbCrTransform; |
|
||||||
private const string PropUseYpCbCrName = "_UseYpCbCr"; |
|
||||||
private static int _propUseYpCbCr; |
|
||||||
|
|
||||||
private void Awake() |
|
||||||
{ |
|
||||||
if (_propStereo == 0) |
|
||||||
{ |
|
||||||
_propStereo = Shader.PropertyToID("Stereo"); |
|
||||||
} |
|
||||||
if (_propAlphaPack == 0) |
|
||||||
{ |
|
||||||
_propAlphaPack = Shader.PropertyToID("AlphaPack"); |
|
||||||
} |
|
||||||
if (_propApplyGamma == 0) |
|
||||||
{ |
|
||||||
_propApplyGamma = Shader.PropertyToID("_ApplyGamma"); |
|
||||||
} |
|
||||||
if (_propLayout == 0) |
|
||||||
{ |
|
||||||
_propLayout = Shader.PropertyToID("Layout"); |
|
||||||
} |
|
||||||
if (_propChromaTex == 0) |
|
||||||
{ |
|
||||||
_propChromaTex = Shader.PropertyToID(PropChromaTexName); |
|
||||||
} |
|
||||||
if (_propYpCbCrTransform == 0) |
|
||||||
{ |
|
||||||
_propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); |
|
||||||
} |
|
||||||
if (_propUseYpCbCr == 0) |
|
||||||
{ |
|
||||||
_propUseYpCbCr = Shader.PropertyToID(PropUseYpCbCrName); |
|
||||||
} |
|
||||||
|
|
||||||
if (_media != null) |
|
||||||
{ |
|
||||||
_media.Events.AddListener(OnMediaPlayerEvent); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public void ForceUpdate() |
|
||||||
{ |
|
||||||
_isDirty = true; |
|
||||||
LateUpdate(); |
|
||||||
} |
|
||||||
|
|
||||||
// Callback function to handle events |
|
||||||
private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) |
|
||||||
{ |
|
||||||
switch (et) |
|
||||||
{ |
|
||||||
case MediaPlayerEvent.EventType.FirstFrameReady: |
|
||||||
case MediaPlayerEvent.EventType.PropertiesChanged: |
|
||||||
ForceUpdate(); |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void ChangeMediaPlayer(MediaPlayer player) |
|
||||||
{ |
|
||||||
if (_media != player) |
|
||||||
{ |
|
||||||
if (_media != null) |
|
||||||
{ |
|
||||||
_media.Events.RemoveListener(OnMediaPlayerEvent); |
|
||||||
} |
|
||||||
_media = player; |
|
||||||
if (_media != null) |
|
||||||
{ |
|
||||||
_media.Events.AddListener(OnMediaPlayerEvent); |
|
||||||
} |
|
||||||
_isDirty = true; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() |
|
||||||
private void LateUpdate() |
|
||||||
{ |
|
||||||
bool applied = false; |
|
||||||
|
|
||||||
// Try to apply texture from media |
|
||||||
if (_media != null && _media.TextureProducer != null) |
|
||||||
{ |
|
||||||
Texture resamplerTex = _media.FrameResampler == null || _media.FrameResampler.OutputTexture == null ? null : _media.FrameResampler.OutputTexture[0]; |
|
||||||
Texture texture = _media.m_Resample ? resamplerTex : _media.TextureProducer.GetTexture(0); |
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
// Check for changing texture |
|
||||||
if (texture != _lastTextureApplied) |
|
||||||
{ |
|
||||||
_isDirty = true; |
|
||||||
} |
|
||||||
|
|
||||||
if (_isDirty) |
|
||||||
{ |
|
||||||
int planeCount = _media.m_Resample ? 1 : _media.TextureProducer.GetTextureCount(); |
|
||||||
for (int plane = 0; plane < planeCount; plane++) |
|
||||||
{ |
|
||||||
Texture resamplerTexPlane = _media.FrameResampler == null || _media.FrameResampler.OutputTexture == null ? null : _media.FrameResampler.OutputTexture[plane]; |
|
||||||
texture = _media.m_Resample ? resamplerTexPlane : _media.TextureProducer.GetTexture(plane); |
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
ApplyMapping(texture, _media.TextureProducer.RequiresVerticalFlip(), plane); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
applied = true; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// If the media didn't apply a texture, then try to apply the default texture |
|
||||||
if (!applied) |
|
||||||
{ |
|
||||||
if (_defaultTexture != _lastTextureApplied) |
|
||||||
{ |
|
||||||
_isDirty = true; |
|
||||||
} |
|
||||||
if (_isDirty) |
|
||||||
{ |
|
||||||
ApplyMapping(_defaultTexture, false); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void ApplyMapping(Texture texture, bool requiresYFlip, int plane = 0) |
|
||||||
{ |
|
||||||
if (_mesh != null) |
|
||||||
{ |
|
||||||
_isDirty = false; |
|
||||||
|
|
||||||
Material[] meshMaterials = _mesh.materials; |
|
||||||
if (meshMaterials != null) |
|
||||||
{ |
|
||||||
for (int i = 0; i < meshMaterials.Length; i++) |
|
||||||
{ |
|
||||||
Material mat = meshMaterials[i]; |
|
||||||
if (mat != null) |
|
||||||
{ |
|
||||||
if (plane == 0) |
|
||||||
{ |
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
mat.SetTexture(_propTexture, texture); |
|
||||||
#else |
|
||||||
mat.SetTexture(_texturePropertyName, texture); |
|
||||||
#endif |
|
||||||
|
|
||||||
_lastTextureApplied = texture; |
|
||||||
|
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
mat.SetTextureScale(_propTexture, new Vector2(_scale.x, -_scale.y)); |
|
||||||
mat.SetTextureOffset(_propTexture, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
mat.SetTextureScale(_propTexture, _scale); |
|
||||||
mat.SetTextureOffset(_propTexture, _offset); |
|
||||||
} |
|
||||||
#else |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
mat.SetTextureScale(_texturePropertyName, new Vector2(_scale.x, -_scale.y)); |
|
||||||
mat.SetTextureOffset(_texturePropertyName, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
mat.SetTextureScale(_texturePropertyName, _scale); |
|
||||||
mat.SetTextureOffset(_texturePropertyName, _offset); |
|
||||||
} |
|
||||||
#endif |
|
||||||
} |
|
||||||
} |
|
||||||
else if (plane == 1) |
|
||||||
{ |
|
||||||
if (mat.HasProperty(_propUseYpCbCr) && mat.HasProperty(_propChromaTex)) |
|
||||||
{ |
|
||||||
mat.EnableKeyword("USE_YPCBCR"); |
|
||||||
mat.SetTexture(_propChromaTex, texture); |
|
||||||
mat.SetMatrix(_propYpCbCrTransform, _media.TextureProducer.GetYpCbCrTransform()); |
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
mat.SetTextureScale(_propChromaTex, new Vector2(_scale.x, -_scale.y)); |
|
||||||
mat.SetTextureOffset(_propChromaTex, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
mat.SetTextureScale(_propChromaTex, _scale); |
|
||||||
mat.SetTextureOffset(_propChromaTex, _offset); |
|
||||||
} |
|
||||||
#else |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
mat.SetTextureScale(PropChromaTexName, new Vector2(_scale.x, -_scale.y)); |
|
||||||
mat.SetTextureOffset(PropChromaTexName, Vector2.up + _offset); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
mat.SetTextureScale(PropChromaTexName, _scale); |
|
||||||
mat.SetTextureOffset(PropChromaTexName, _offset); |
|
||||||
} |
|
||||||
#endif |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (_media != null) |
|
||||||
{ |
|
||||||
// Apply changes for layout |
|
||||||
if (mat.HasProperty(_propLayout)) |
|
||||||
{ |
|
||||||
Helper.SetupLayoutMaterial(mat, _media.VideoLayoutMapping); |
|
||||||
} |
|
||||||
// Apply changes for stereo videos |
|
||||||
if (mat.HasProperty(_propStereo)) |
|
||||||
{ |
|
||||||
Helper.SetupStereoMaterial(mat, _media.m_StereoPacking, _media.m_DisplayDebugStereoColorTint); |
|
||||||
} |
|
||||||
// Apply changes for alpha videos |
|
||||||
if (mat.HasProperty(_propAlphaPack)) |
|
||||||
{ |
|
||||||
Helper.SetupAlphaPackedMaterial(mat, _media.m_AlphaPacking); |
|
||||||
} |
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
// Apply gamma |
|
||||||
if (mat.HasProperty(_propApplyGamma) && _media.Info != null) |
|
||||||
{ |
|
||||||
Helper.SetupGammaMaterial(mat, _media.Info.PlayerSupportsLinearColorSpace()); |
|
||||||
} |
|
||||||
#else |
|
||||||
_propApplyGamma |= 0; |
|
||||||
#endif |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void OnEnable() |
|
||||||
{ |
|
||||||
if (_mesh == null) |
|
||||||
{ |
|
||||||
_mesh = this.GetComponent<MeshRenderer>(); |
|
||||||
if (_mesh == null) |
|
||||||
{ |
|
||||||
Debug.LogWarning("[AVProVideo] No mesh renderer set or found in gameobject"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_5_6_OR_NEWER |
|
||||||
_propTexture = Shader.PropertyToID(_texturePropertyName); |
|
||||||
#endif |
|
||||||
|
|
||||||
_isDirty = true; |
|
||||||
if (_mesh != null) |
|
||||||
{ |
|
||||||
LateUpdate(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void OnDisable() |
|
||||||
{ |
|
||||||
ApplyMapping(_defaultTexture, false); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: f6d1977a52888584496b1acc7e998011 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 3b05a64a5de3f8546bf586f42e37b979 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,397 +0,0 @@ |
|||||||
#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#elif UNITY_IOS || UNITY_ANDROID |
|
||||||
#if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) |
|
||||||
#define UNITY_HELPATTRIB |
|
||||||
#endif |
|
||||||
|
|
||||||
using UnityEngine; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Builds a cube mesh for displaying a 360 degree "Cubemap 3x2 facebook layout" texture in VR |
|
||||||
/// </summary> |
|
||||||
[RequireComponent(typeof(MeshRenderer))] |
|
||||||
[RequireComponent(typeof(MeshFilter))] |
|
||||||
//[ExecuteInEditMode] |
|
||||||
[AddComponentMenu("AVPro Video/Cubemap Cube (VR)", 400)] |
|
||||||
#if UNITY_HELPATTRIB |
|
||||||
[HelpURL("http://renderheads.com/product/avpro-video/")] |
|
||||||
#endif |
|
||||||
public class CubemapCube : MonoBehaviour |
|
||||||
{ |
|
||||||
public enum Layout |
|
||||||
{ |
|
||||||
FacebookTransform32, // Layout for Facebooks FFMPEG Transform plugin with 3:2 layout |
|
||||||
Facebook360Capture, // Layout for Facebooks 360-Capture-SDK |
|
||||||
} |
|
||||||
|
|
||||||
private Mesh _mesh; |
|
||||||
protected MeshRenderer _renderer; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
protected Material _material = null; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private MediaPlayer _mediaPlayer = null; |
|
||||||
|
|
||||||
// This value comes from the facebook transform ffmpeg filter and is used to prevent seams appearing along the edges due to bilinear filtering |
|
||||||
[SerializeField] |
|
||||||
private float expansion_coeff = 1.01f; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private Layout _layout = Layout.FacebookTransform32; |
|
||||||
|
|
||||||
private Texture _texture; |
|
||||||
private bool _verticalFlip; |
|
||||||
private int _textureWidth; |
|
||||||
private int _textureHeight; |
|
||||||
private static int _propApplyGamma; |
|
||||||
|
|
||||||
private static int _propUseYpCbCr; |
|
||||||
private const string PropChromaTexName = "_ChromaTex"; |
|
||||||
private static int _propChromaTex; |
|
||||||
private const string PropYpCbCrTransformName = "_YpCbCrTransform"; |
|
||||||
private static int _propYpCbCrTransform; |
|
||||||
|
|
||||||
public MediaPlayer Player |
|
||||||
{ |
|
||||||
set { _mediaPlayer = value; } |
|
||||||
get { return _mediaPlayer; } |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
void Awake() |
|
||||||
{ |
|
||||||
if (_propApplyGamma == 0) |
|
||||||
{ |
|
||||||
_propApplyGamma = Shader.PropertyToID("_ApplyGamma"); |
|
||||||
} |
|
||||||
if (_propUseYpCbCr == 0) |
|
||||||
_propUseYpCbCr = Shader.PropertyToID("_UseYpCbCr"); |
|
||||||
if (_propChromaTex == 0) |
|
||||||
_propChromaTex = Shader.PropertyToID(PropChromaTexName); |
|
||||||
if (_propYpCbCrTransform == 0) |
|
||||||
_propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); |
|
||||||
} |
|
||||||
|
|
||||||
void Start() |
|
||||||
{ |
|
||||||
if (_mesh == null) |
|
||||||
{ |
|
||||||
_mesh = new Mesh(); |
|
||||||
_mesh.MarkDynamic(); |
|
||||||
MeshFilter filter = this.GetComponent<MeshFilter>(); |
|
||||||
if (filter != null) |
|
||||||
{ |
|
||||||
filter.mesh = _mesh; |
|
||||||
} |
|
||||||
_renderer = this.GetComponent<MeshRenderer>(); |
|
||||||
if (_renderer != null) |
|
||||||
{ |
|
||||||
_renderer.material = _material; |
|
||||||
} |
|
||||||
BuildMesh(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void OnDestroy() |
|
||||||
{ |
|
||||||
if (_mesh != null) |
|
||||||
{ |
|
||||||
MeshFilter filter = this.GetComponent<MeshFilter>(); |
|
||||||
if (filter != null) |
|
||||||
{ |
|
||||||
filter.mesh = null; |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_EDITOR |
|
||||||
Mesh.DestroyImmediate(_mesh); |
|
||||||
#else |
|
||||||
Mesh.Destroy(_mesh); |
|
||||||
#endif |
|
||||||
_mesh = null; |
|
||||||
} |
|
||||||
|
|
||||||
if (_renderer != null) |
|
||||||
{ |
|
||||||
_renderer.material = null; |
|
||||||
_renderer = null; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() |
|
||||||
void LateUpdate() |
|
||||||
{ |
|
||||||
if (Application.isPlaying) |
|
||||||
{ |
|
||||||
Texture texture = null; |
|
||||||
bool requiresVerticalFlip = false; |
|
||||||
if (_mediaPlayer != null && _mediaPlayer.Control != null) |
|
||||||
{ |
|
||||||
if (_mediaPlayer.TextureProducer != null) |
|
||||||
{ |
|
||||||
Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[0]; |
|
||||||
texture = _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(); |
|
||||||
requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); |
|
||||||
|
|
||||||
// Detect changes that we need to apply to the material/mesh |
|
||||||
if (_texture != texture || |
|
||||||
_verticalFlip != requiresVerticalFlip || |
|
||||||
(texture != null && (_textureWidth != texture.width || _textureHeight != texture.height)) |
|
||||||
) |
|
||||||
{ |
|
||||||
_texture = texture; |
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
UpdateMeshUV(texture.width, texture.height, requiresVerticalFlip); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
// Apply gamma |
|
||||||
if (_renderer.material.HasProperty(_propApplyGamma) && _mediaPlayer.Info != null) |
|
||||||
{ |
|
||||||
Helper.SetupGammaMaterial(_renderer.material, _mediaPlayer.Info.PlayerSupportsLinearColorSpace()); |
|
||||||
} |
|
||||||
#endif |
|
||||||
if (_renderer.material.HasProperty(_propUseYpCbCr) && _mediaPlayer.TextureProducer.GetTextureCount() == 2) |
|
||||||
{ |
|
||||||
_renderer.material.EnableKeyword("USE_YPCBCR"); |
|
||||||
Texture resamplerTexYCRCB = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[1]; |
|
||||||
_renderer.material.SetTexture(_propChromaTex, _mediaPlayer.m_Resample ? resamplerTexYCRCB : _mediaPlayer.TextureProducer.GetTexture(1)); |
|
||||||
_renderer.material.SetMatrix(_propYpCbCrTransform, _mediaPlayer.TextureProducer.GetYpCbCrTransform()); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
_renderer.material.mainTexture = _texture; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_renderer.material.mainTexture = null; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void BuildMesh() |
|
||||||
{ |
|
||||||
Vector3 offset = new Vector3(-0.5f, -0.5f, -0.5f); |
|
||||||
Vector3[] v = new Vector3[] |
|
||||||
{ |
|
||||||
// Left |
|
||||||
new Vector3(0f,-1f,0f) - offset, |
|
||||||
new Vector3(0f,0f,0f) - offset, |
|
||||||
new Vector3(0f,0f,-1f) - offset, |
|
||||||
new Vector3(0f,-1f,-1f) - offset, |
|
||||||
// Front |
|
||||||
new Vector3(0f,0f,0f) - offset, |
|
||||||
new Vector3(-1f,0f,0f) - offset, |
|
||||||
new Vector3(-1f,0f,-1f) - offset, |
|
||||||
new Vector3(0f,0f,-1f) - offset, |
|
||||||
// Right |
|
||||||
new Vector3(-1f,0f,0f) - offset, |
|
||||||
new Vector3(-1f,-1f,0f) - offset, |
|
||||||
new Vector3(-1f,-1f,-1f) - offset, |
|
||||||
new Vector3(-1f,0f,-1f) - offset, |
|
||||||
// Back |
|
||||||
new Vector3(-1f,-1f,0f) - offset, |
|
||||||
new Vector3(0f,-1f,0f) - offset, |
|
||||||
new Vector3(0f,-1f,-1f) - offset, |
|
||||||
new Vector3(-1f,-1f,-1f) - offset, |
|
||||||
// Bottom |
|
||||||
new Vector3(0f,-1f,-1f) - offset, |
|
||||||
new Vector3(0f,0f,-1f) - offset, |
|
||||||
new Vector3(-1f,0f,-1f) - offset, |
|
||||||
new Vector3(-1f,-1f,-1f) - offset, |
|
||||||
// Top |
|
||||||
new Vector3(-1f,-1f,0f) - offset, |
|
||||||
new Vector3(-1f,0f,0f) - offset, |
|
||||||
new Vector3(0f,0f,0f) - offset, |
|
||||||
new Vector3(0f,-1f,0f) - offset, |
|
||||||
}; |
|
||||||
|
|
||||||
Matrix4x4 rot = Matrix4x4.TRS(Vector3.zero, Quaternion.AngleAxis(-90f, Vector3.right), Vector3.one); |
|
||||||
for (int i = 0; i < v.Length; i++) |
|
||||||
{ |
|
||||||
v[i] = rot.MultiplyPoint(v[i]); |
|
||||||
} |
|
||||||
|
|
||||||
_mesh.vertices = v; |
|
||||||
|
|
||||||
_mesh.triangles = new int[] |
|
||||||
{ |
|
||||||
0,1,2, |
|
||||||
0,2,3, |
|
||||||
4,5,6, |
|
||||||
4,6,7, |
|
||||||
8,9,10, |
|
||||||
8,10,11, |
|
||||||
12,13,14, |
|
||||||
12,14,15, |
|
||||||
16,17,18, |
|
||||||
16,18,19, |
|
||||||
20,21,22, |
|
||||||
20,22,23, |
|
||||||
}; |
|
||||||
|
|
||||||
_mesh.normals = new Vector3[] |
|
||||||
{ |
|
||||||
// Left |
|
||||||
new Vector3(-1f,0f,0f), |
|
||||||
new Vector3(-1f,0f,0f), |
|
||||||
new Vector3(-1f,0f,0f), |
|
||||||
new Vector3(-1f,0f,0f), |
|
||||||
// Front |
|
||||||
new Vector3(0f,-1f,0f), |
|
||||||
new Vector3(0f,-1f,0f), |
|
||||||
new Vector3(0f,-1f,0f), |
|
||||||
new Vector3(0f,-1f,0f), |
|
||||||
// Right |
|
||||||
new Vector3(1f,0f,0f), |
|
||||||
new Vector3(1f,0f,0f), |
|
||||||
new Vector3(1f,0f,0f), |
|
||||||
new Vector3(1f,0f,0f), |
|
||||||
// Back |
|
||||||
new Vector3(0f,1f,0f), |
|
||||||
new Vector3(0f,1f,0f), |
|
||||||
new Vector3(0f,1f,0f), |
|
||||||
new Vector3(0f,1f,0f), |
|
||||||
// Bottom |
|
||||||
new Vector3(0f,0f,1f), |
|
||||||
new Vector3(0f,0f,1f), |
|
||||||
new Vector3(0f,0f,1f), |
|
||||||
new Vector3(0f,0f,1f), |
|
||||||
// Top |
|
||||||
new Vector3(0f,0f,-1f), |
|
||||||
new Vector3(0f,0f,-1f), |
|
||||||
new Vector3(0f,0f,-1f), |
|
||||||
new Vector3(0f,0f,-1f) |
|
||||||
}; |
|
||||||
|
|
||||||
UpdateMeshUV(512, 512, false); |
|
||||||
} |
|
||||||
|
|
||||||
private void UpdateMeshUV(int textureWidth, int textureHeight, bool flipY) |
|
||||||
{ |
|
||||||
_textureWidth = textureWidth; |
|
||||||
_textureHeight = textureHeight; |
|
||||||
_verticalFlip = flipY; |
|
||||||
|
|
||||||
float texWidth = textureWidth; |
|
||||||
float texHeight = textureHeight; |
|
||||||
|
|
||||||
float blockWidth = texWidth / 3f; |
|
||||||
float pixelOffset = Mathf.Floor(((expansion_coeff * blockWidth) - blockWidth) / 2f); |
|
||||||
|
|
||||||
float wO = pixelOffset / texWidth; |
|
||||||
float hO = pixelOffset / texHeight; |
|
||||||
|
|
||||||
const float third = 1f / 3f; |
|
||||||
const float half = 0.5f; |
|
||||||
|
|
||||||
Vector2[] uv = null; |
|
||||||
if (_layout == Layout.Facebook360Capture) |
|
||||||
{ |
|
||||||
uv = new Vector2[] |
|
||||||
{ |
|
||||||
//front (texture middle top) correct left |
|
||||||
new Vector2(third+wO, half-hO), |
|
||||||
new Vector2((third*2f)-wO, half-hO), |
|
||||||
new Vector2((third*2f)-wO, 0f+hO), |
|
||||||
new Vector2(third+wO, 0f+hO), |
|
||||||
|
|
||||||
//left (texture middle bottom) correct front |
|
||||||
new Vector2(third+wO,1f-hO), |
|
||||||
new Vector2((third*2f)-wO, 1f-hO), |
|
||||||
new Vector2((third*2f)-wO, half+hO), |
|
||||||
new Vector2(third+wO, half+hO), |
|
||||||
|
|
||||||
//bottom (texture left top) correct right |
|
||||||
new Vector2(0f+wO, half-hO), |
|
||||||
new Vector2(third-wO, half-hO), |
|
||||||
new Vector2(third-wO, 0f+hO), |
|
||||||
new Vector2(0f+wO, 0f+hO), |
|
||||||
|
|
||||||
//top (texture right top) correct rear |
|
||||||
new Vector2((third*2f)+wO, 1f-hO), |
|
||||||
new Vector2(1f-wO, 1f-hO), |
|
||||||
new Vector2(1f-wO, half+hO), |
|
||||||
new Vector2((third*2f)+wO, half+hO), |
|
||||||
|
|
||||||
//back (texture right bottom) correct ground |
|
||||||
new Vector2((third*2f)+wO, 0f+hO), |
|
||||||
new Vector2((third*2f)+wO, half-hO), |
|
||||||
new Vector2(1f-wO, half-hO), |
|
||||||
new Vector2(1f-wO, 0f+hO), |
|
||||||
|
|
||||||
//right (texture left bottom) correct sky |
|
||||||
new Vector2(third-wO, 1f-hO), |
|
||||||
new Vector2(third-wO, half+hO), |
|
||||||
new Vector2(0f+wO, half+hO), |
|
||||||
new Vector2(0f+wO, 1f-hO), |
|
||||||
}; |
|
||||||
} |
|
||||||
else if (_layout == Layout.FacebookTransform32) |
|
||||||
{ |
|
||||||
uv = new Vector2[] |
|
||||||
{ |
|
||||||
//left |
|
||||||
new Vector2(third+wO,1f-hO), |
|
||||||
new Vector2((third*2f)-wO, 1f-hO), |
|
||||||
new Vector2((third*2f)-wO, half+hO), |
|
||||||
new Vector2(third+wO, half+hO), |
|
||||||
|
|
||||||
//front |
|
||||||
new Vector2(third+wO, half-hO), |
|
||||||
new Vector2((third*2f)-wO, half-hO), |
|
||||||
new Vector2((third*2f)-wO, 0f+hO), |
|
||||||
new Vector2(third+wO, 0f+hO), |
|
||||||
|
|
||||||
//right |
|
||||||
new Vector2(0f+wO, 1f-hO), |
|
||||||
new Vector2(third-wO, 1f-hO), |
|
||||||
new Vector2(third-wO, half+hO), |
|
||||||
new Vector2(0f+wO, half+hO), |
|
||||||
|
|
||||||
//back |
|
||||||
new Vector2((third*2f)+wO, half-hO), |
|
||||||
new Vector2(1f-wO, half-hO), |
|
||||||
new Vector2(1f-wO, 0f+hO), |
|
||||||
new Vector2((third*2f)+wO, 0f+hO), |
|
||||||
|
|
||||||
//bottom |
|
||||||
new Vector2(0f+wO, 0f+hO), |
|
||||||
new Vector2(0f+wO, half-hO), |
|
||||||
new Vector2(third-wO, half-hO), |
|
||||||
new Vector2(third-wO, 0f+hO), |
|
||||||
|
|
||||||
//top |
|
||||||
new Vector2(1f-wO, 1f-hO), |
|
||||||
new Vector2(1f-wO, half+hO), |
|
||||||
new Vector2((third*2f)+wO, half+hO), |
|
||||||
new Vector2((third*2f)+wO, 1f-hO) |
|
||||||
}; |
|
||||||
} |
|
||||||
|
|
||||||
if (flipY) |
|
||||||
{ |
|
||||||
for (int i = 0; i < uv.Length; i++) |
|
||||||
{ |
|
||||||
uv[i].y = 1f - uv[i].y; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
_mesh.uv = uv; |
|
||||||
_mesh.UploadMeshData(false); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 683e7713922f8044c81bf497a0b5887e |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 7954bb33da8af354bbe3cdece033bfdc |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,60 +0,0 @@ |
|||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) |
|
||||||
#define UNITY_HELPATTRIB |
|
||||||
#endif |
|
||||||
|
|
||||||
using UnityEngine; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
|
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Draws video over the whole background using the special "background" tag on the shader. |
|
||||||
/// Useful for augmented reality. |
|
||||||
/// NOTE: This doesn't work with the camera clear mode set to 'skybox' |
|
||||||
/// </summary> |
|
||||||
[AddComponentMenu("AVPro Video/Display Background", 200)] |
|
||||||
#if UNITY_HELPATTRIB |
|
||||||
[HelpURL("http://renderheads.com/product/avpro-video/")] |
|
||||||
#endif |
|
||||||
[ExecuteInEditMode] |
|
||||||
public class DisplayBackground : MonoBehaviour |
|
||||||
{ |
|
||||||
public IMediaProducer _source; |
|
||||||
|
|
||||||
public Texture2D _texture; |
|
||||||
public Material _material; |
|
||||||
|
|
||||||
//------------------------------------------------------------------------- |
|
||||||
|
|
||||||
void OnRenderObject() |
|
||||||
{ |
|
||||||
if (_material == null || _texture == null) |
|
||||||
return; |
|
||||||
|
|
||||||
Vector4 uv = new Vector4(0f, 0f, 1f, 1f); |
|
||||||
_material.SetPass(0); |
|
||||||
GL.PushMatrix(); |
|
||||||
GL.LoadOrtho(); |
|
||||||
GL.Begin(GL.QUADS); |
|
||||||
|
|
||||||
GL.TexCoord2(uv.x, uv.y); |
|
||||||
GL.Vertex3(0.0f, 0.0f, 0.1f); |
|
||||||
|
|
||||||
GL.TexCoord2(uv.z, uv.y); |
|
||||||
GL.Vertex3(1.0f, 0.0f, 0.1f); |
|
||||||
|
|
||||||
GL.TexCoord2(uv.z, uv.w); |
|
||||||
GL.Vertex3(1.0f, 1.0f, 0.1f); |
|
||||||
|
|
||||||
GL.TexCoord2(uv.x, uv.w); |
|
||||||
GL.Vertex3(0.0f, 1.0f, 0.1f); |
|
||||||
|
|
||||||
GL.End(); |
|
||||||
GL.PopMatrix(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 6265373c6a2e0b24f8cd817d3bb88b51 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: |
|
||||||
- _texture: {instanceID: 0} |
|
||||||
- _material: {fileID: 2100000, guid: 7ccf4b555441d554484bbe799cb1c834, type: 2} |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,314 +0,0 @@ |
|||||||
#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#elif UNITY_IOS || UNITY_ANDROID |
|
||||||
#if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) |
|
||||||
#define UNITY_HELPATTRIB |
|
||||||
#endif |
|
||||||
|
|
||||||
using UnityEngine; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Displays the video from MediaPlayer component using IMGUI |
|
||||||
/// </summary> |
|
||||||
[AddComponentMenu("AVPro Video/Display IMGUI", 200)] |
|
||||||
#if UNITY_HELPATTRIB |
|
||||||
[HelpURL("http://renderheads.com/product/avpro-video/")] |
|
||||||
#endif |
|
||||||
[ExecuteInEditMode] |
|
||||||
public class DisplayIMGUI : MonoBehaviour |
|
||||||
{ |
|
||||||
private const string PropChromaTexName = "_ChromaTex"; |
|
||||||
private const string PropYpCbCrTransformName = "_YpCbCrTransform"; |
|
||||||
|
|
||||||
public MediaPlayer _mediaPlayer; |
|
||||||
|
|
||||||
public bool _displayInEditor = true; |
|
||||||
public ScaleMode _scaleMode = ScaleMode.ScaleToFit; |
|
||||||
public Color _color = Color.white; |
|
||||||
public bool _alphaBlend = false; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private bool _useDepth = false; |
|
||||||
|
|
||||||
public int _depth = 0; |
|
||||||
public bool _fullScreen = true; |
|
||||||
[Range(0f, 1f)] |
|
||||||
public float _x = 0.0f; |
|
||||||
[Range(0f, 1f)] |
|
||||||
public float _y = 0.0f; |
|
||||||
[Range(0f, 1f)] |
|
||||||
public float _width = 1.0f; |
|
||||||
[Range(0f, 1f)] |
|
||||||
public float _height = 1.0f; |
|
||||||
|
|
||||||
private static int _propAlphaPack; |
|
||||||
private static int _propVertScale; |
|
||||||
private static int _propApplyGamma; |
|
||||||
private static int _propChromaTex; |
|
||||||
private static int _propYpCbCrTransform; |
|
||||||
private static Shader _shaderAlphaPacking; |
|
||||||
private Material _material; |
|
||||||
|
|
||||||
void Awake() |
|
||||||
{ |
|
||||||
if (_propAlphaPack == 0) |
|
||||||
{ |
|
||||||
_propAlphaPack = Shader.PropertyToID("AlphaPack"); |
|
||||||
_propVertScale = Shader.PropertyToID("_VertScale"); |
|
||||||
_propApplyGamma = Shader.PropertyToID("_ApplyGamma"); |
|
||||||
_propChromaTex = Shader.PropertyToID(PropChromaTexName); |
|
||||||
_propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void Start() |
|
||||||
{ |
|
||||||
// Disabling this lets you skip the GUI layout phase which helps performance, but this also breaks the GUI.depth usage. |
|
||||||
if (!_useDepth) |
|
||||||
{ |
|
||||||
this.useGUILayout = false; |
|
||||||
} |
|
||||||
|
|
||||||
if (_shaderAlphaPacking == null) |
|
||||||
{ |
|
||||||
_shaderAlphaPacking = Shader.Find("AVProVideo/IMGUI/Texture Transparent"); |
|
||||||
if (_shaderAlphaPacking == null) |
|
||||||
{ |
|
||||||
Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/IMGUI/Transparent Packed"); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void OnDestroy() |
|
||||||
{ |
|
||||||
// Destroy existing material |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
#if UNITY_EDITOR |
|
||||||
Material.DestroyImmediate(_material); |
|
||||||
#else |
|
||||||
Material.Destroy(_material); |
|
||||||
#endif |
|
||||||
_material = null; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private Shader GetRequiredShader() |
|
||||||
{ |
|
||||||
Shader result = null; |
|
||||||
|
|
||||||
switch (_mediaPlayer.m_AlphaPacking) |
|
||||||
{ |
|
||||||
case AlphaPacking.None: |
|
||||||
break; |
|
||||||
case AlphaPacking.LeftRight: |
|
||||||
case AlphaPacking.TopBottom: |
|
||||||
result = _shaderAlphaPacking; |
|
||||||
break; |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
if (result == null && _mediaPlayer.Info != null) |
|
||||||
{ |
|
||||||
// If the player does support generating sRGB textures then we need to use a shader to convert them for display via IMGUI |
|
||||||
if (QualitySettings.activeColorSpace == ColorSpace.Linear && _mediaPlayer.Info.PlayerSupportsLinearColorSpace()) |
|
||||||
{ |
|
||||||
result = _shaderAlphaPacking; |
|
||||||
} |
|
||||||
} |
|
||||||
#endif |
|
||||||
if (result == null && _mediaPlayer.TextureProducer != null) |
|
||||||
{ |
|
||||||
if (_mediaPlayer.TextureProducer.GetTextureCount() == 2) |
|
||||||
{ |
|
||||||
result = _shaderAlphaPacking; |
|
||||||
} |
|
||||||
} |
|
||||||
return result; |
|
||||||
} |
|
||||||
|
|
||||||
void Update() |
|
||||||
{ |
|
||||||
if (_mediaPlayer != null) |
|
||||||
{ |
|
||||||
// Get required shader |
|
||||||
Shader currentShader = null; |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
currentShader = _material.shader; |
|
||||||
} |
|
||||||
Shader nextShader = GetRequiredShader(); |
|
||||||
|
|
||||||
// If the shader requirement has changed |
|
||||||
if (currentShader != nextShader) |
|
||||||
{ |
|
||||||
// Destroy existing material |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
#if UNITY_EDITOR |
|
||||||
Material.DestroyImmediate(_material); |
|
||||||
#else |
|
||||||
Material.Destroy(_material); |
|
||||||
#endif |
|
||||||
_material = null; |
|
||||||
} |
|
||||||
|
|
||||||
// Create new material |
|
||||||
if (nextShader != null) |
|
||||||
{ |
|
||||||
_material = new Material(nextShader); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// Apply material changes |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
if (_material.HasProperty(_propAlphaPack)) |
|
||||||
{ |
|
||||||
Helper.SetupAlphaPackedMaterial(_material, _mediaPlayer.m_AlphaPacking); |
|
||||||
} |
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
// Apply gamma |
|
||||||
if (_material.HasProperty(_propApplyGamma) && _mediaPlayer.Info != null) |
|
||||||
{ |
|
||||||
Helper.SetupGammaMaterial(_material, !_mediaPlayer.Info.PlayerSupportsLinearColorSpace()); |
|
||||||
} |
|
||||||
#else |
|
||||||
_propApplyGamma |= 0; |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void OnGUI() |
|
||||||
{ |
|
||||||
#if UNITY_EDITOR |
|
||||||
if (!Application.isPlaying && _displayInEditor) |
|
||||||
{ |
|
||||||
GUI.depth = _depth; |
|
||||||
GUI.color = _color; |
|
||||||
Rect rect = GetRect(); |
|
||||||
Texture2D icon = Resources.Load<Texture2D>("AVProVideoIcon"); |
|
||||||
Rect uv = rect; |
|
||||||
uv.x /= Screen.width; |
|
||||||
uv.width /= Screen.width; |
|
||||||
uv.y /= Screen.height; |
|
||||||
uv.height /= Screen.height; |
|
||||||
uv.width *= 16f; |
|
||||||
uv.height *= 16f; |
|
||||||
uv.x += 0.5f; |
|
||||||
uv.y += 0.5f; |
|
||||||
GUI.DrawTextureWithTexCoords(rect, icon, uv); |
|
||||||
return; |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
if (_mediaPlayer == null) |
|
||||||
{ |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
bool requiresVerticalFlip = false; |
|
||||||
Texture texture = null; |
|
||||||
|
|
||||||
if (_displayInEditor) |
|
||||||
{ |
|
||||||
#if UNITY_EDITOR |
|
||||||
texture = Texture2D.whiteTexture; |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
if (_mediaPlayer.Info != null && !_mediaPlayer.Info.HasVideo()) |
|
||||||
{ |
|
||||||
texture = null; |
|
||||||
} |
|
||||||
|
|
||||||
if (_mediaPlayer.TextureProducer != null) |
|
||||||
{ |
|
||||||
if (_mediaPlayer.m_Resample) |
|
||||||
{ |
|
||||||
if (_mediaPlayer.FrameResampler.OutputTexture != null && _mediaPlayer.FrameResampler.OutputTexture[0] != null) |
|
||||||
{ |
|
||||||
texture = _mediaPlayer.FrameResampler.OutputTexture[0]; |
|
||||||
requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); |
|
||||||
} |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
if (_mediaPlayer.TextureProducer.GetTexture() != null) |
|
||||||
{ |
|
||||||
texture = _mediaPlayer.TextureProducer.GetTexture(); |
|
||||||
requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (_mediaPlayer.TextureProducer.GetTextureCount() == 2 && _material != null) |
|
||||||
{ |
|
||||||
Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[1]; |
|
||||||
Texture chroma = _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(1); |
|
||||||
_material.SetTexture(_propChromaTex, chroma); |
|
||||||
_material.SetMatrix(_propYpCbCrTransform, _mediaPlayer.TextureProducer.GetYpCbCrTransform()); |
|
||||||
_material.EnableKeyword("USE_YPCBCR"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
if (!_alphaBlend || _color.a > 0f) |
|
||||||
{ |
|
||||||
GUI.depth = _depth; |
|
||||||
GUI.color = _color; |
|
||||||
|
|
||||||
Rect rect = GetRect(); |
|
||||||
|
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
if (requiresVerticalFlip) |
|
||||||
{ |
|
||||||
_material.SetFloat(_propVertScale, -1f); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_material.SetFloat(_propVertScale, 1f); |
|
||||||
} |
|
||||||
Helper.DrawTexture(rect, texture, _scaleMode, _mediaPlayer.m_AlphaPacking, _material); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
if (requiresVerticalFlip) |
|
||||||
{ |
|
||||||
GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0f, rect.y + (rect.height / 2f))); |
|
||||||
} |
|
||||||
GUI.DrawTexture(rect, texture, _scaleMode, _alphaBlend); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public Rect GetRect() |
|
||||||
{ |
|
||||||
Rect rect; |
|
||||||
if (_fullScreen) |
|
||||||
{ |
|
||||||
rect = new Rect(0.0f, 0.0f, Screen.width, Screen.height); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
rect = new Rect(_x * (Screen.width - 1), _y * (Screen.height - 1), _width * Screen.width, _height * Screen.height); |
|
||||||
} |
|
||||||
|
|
||||||
return rect; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 75f3b319d2d69934d8bf545ab45c918d |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,663 +0,0 @@ |
|||||||
#if UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_5 || UNITY_5_4_OR_NEWER |
|
||||||
#define UNITY_FEATURE_UGUI |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR |
|
||||||
#define REAL_ANDROID |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#elif UNITY_IOS || UNITY_ANDROID |
|
||||||
#if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) |
|
||||||
#define UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
// Some older versions of Unity don't set the _TexelSize variable from uGUI so we need to set this manually |
|
||||||
#if ((!UNITY_5_4_OR_NEWER && !UNITY_5) || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3_0 || UNITY_5_3_1 || UNITY_5_3_2 || UNITY_5_3_3) |
|
||||||
#define UNITY_UGUI_NOSET_TEXELSIZE |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) |
|
||||||
#define UNITY_HELPATTRIB |
|
||||||
#endif |
|
||||||
|
|
||||||
using System.Collections.Generic; |
|
||||||
#if UNITY_FEATURE_UGUI |
|
||||||
using UnityEngine; |
|
||||||
using UnityEngine.UI; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Displays the video from MediaPlayer component using uGUI |
|
||||||
/// </summary> |
|
||||||
[ExecuteInEditMode] |
|
||||||
#if UNITY_HELPATTRIB |
|
||||||
[HelpURL("http://renderheads.com/product/avpro-video/")] |
|
||||||
#endif |
|
||||||
[AddComponentMenu("AVPro Video/Display uGUI", 200)] |
|
||||||
public class DisplayUGUI : UnityEngine.UI.MaskableGraphic |
|
||||||
{ |
|
||||||
[SerializeField] |
|
||||||
public MediaPlayer _mediaPlayer; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
public Rect m_UVRect = new Rect(0f, 0f, 1f, 1f); |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
public bool _setNativeSize = false; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
public ScaleMode _scaleMode = ScaleMode.ScaleToFit; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
public bool _noDefaultDisplay = true; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
public bool _displayInEditor = true; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
public Texture _defaultTexture; |
|
||||||
|
|
||||||
private int _lastWidth; |
|
||||||
private int _lastHeight; |
|
||||||
private bool _flipY; |
|
||||||
private Texture _lastTexture; |
|
||||||
private static Shader _shaderStereoPacking; |
|
||||||
private static Shader _shaderAlphaPacking; |
|
||||||
#if REAL_ANDROID |
|
||||||
private static Shader _shaderAndroidOES; |
|
||||||
#endif |
|
||||||
private static int _propAlphaPack; |
|
||||||
private static int _propVertScale; |
|
||||||
private static int _propStereo; |
|
||||||
private static int _propApplyGamma; |
|
||||||
private static int _propUseYpCbCr; |
|
||||||
private const string PropChromaTexName = "_ChromaTex"; |
|
||||||
private static int _propChromaTex; |
|
||||||
private const string PropYpCbCrTransformName = "_YpCbCrTransform"; |
|
||||||
private static int _propYpCbCrTransform; |
|
||||||
|
|
||||||
#if UNITY_UGUI_NOSET_TEXELSIZE |
|
||||||
private static int _propMainTextureTexelSize; |
|
||||||
#endif |
|
||||||
private bool _userMaterial = true; |
|
||||||
private Material _material; |
|
||||||
|
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2_0 && !UNITY_5_2_1) |
|
||||||
private List<UIVertex> _vertices = new List<UIVertex>(4); |
|
||||||
private static List<int> QuadIndices = new List<int>(new int[] { 0, 1, 2, 2, 3, 0 }); |
|
||||||
#endif |
|
||||||
|
|
||||||
protected override void Awake() |
|
||||||
{ |
|
||||||
if (_propAlphaPack == 0) |
|
||||||
{ |
|
||||||
_propStereo = Shader.PropertyToID("Stereo"); |
|
||||||
_propAlphaPack = Shader.PropertyToID("AlphaPack"); |
|
||||||
_propVertScale = Shader.PropertyToID("_VertScale"); |
|
||||||
_propApplyGamma = Shader.PropertyToID("_ApplyGamma"); |
|
||||||
_propUseYpCbCr = Shader.PropertyToID("_UseYpCbCr"); |
|
||||||
_propChromaTex = Shader.PropertyToID(PropChromaTexName); |
|
||||||
_propUseYpCbCr = Shader.PropertyToID("_UseYpCbCr"); |
|
||||||
_propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); |
|
||||||
#if UNITY_UGUI_NOSET_TEXELSIZE |
|
||||||
_propMainTextureTexelSize = Shader.PropertyToID("_MainTex_TexelSize"); |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
if (_shaderAlphaPacking == null) |
|
||||||
{ |
|
||||||
_shaderAlphaPacking = Shader.Find("AVProVideo/UI/Transparent Packed"); |
|
||||||
if (_shaderAlphaPacking == null) |
|
||||||
{ |
|
||||||
Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/UI/Transparent Packed"); |
|
||||||
} |
|
||||||
} |
|
||||||
if (_shaderStereoPacking == null) |
|
||||||
{ |
|
||||||
_shaderStereoPacking = Shader.Find("AVProVideo/UI/Stereo"); |
|
||||||
if (_shaderStereoPacking == null) |
|
||||||
{ |
|
||||||
Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/UI/Stereo"); |
|
||||||
} |
|
||||||
} |
|
||||||
#if REAL_ANDROID |
|
||||||
if (_shaderAndroidOES == null) |
|
||||||
{ |
|
||||||
_shaderAndroidOES = Shader.Find("AVProVideo/UI/AndroidOES"); |
|
||||||
if (_shaderAndroidOES == null) |
|
||||||
{ |
|
||||||
Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/UI/AndroidOES"); |
|
||||||
} |
|
||||||
} |
|
||||||
#endif |
|
||||||
base.Awake(); |
|
||||||
} |
|
||||||
|
|
||||||
protected override void Start() |
|
||||||
{ |
|
||||||
_userMaterial = (this.m_Material != null); |
|
||||||
|
|
||||||
base.Start(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
protected override void OnDestroy() |
|
||||||
{ |
|
||||||
// Destroy existing material |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
this.material = null; |
|
||||||
|
|
||||||
#if UNITY_EDITOR |
|
||||||
Material.DestroyImmediate(_material); |
|
||||||
#else |
|
||||||
Material.Destroy(_material); |
|
||||||
#endif |
|
||||||
_material = null; |
|
||||||
} |
|
||||||
base.OnDestroy(); |
|
||||||
} |
|
||||||
|
|
||||||
private Shader GetRequiredShader() |
|
||||||
{ |
|
||||||
Shader result = null; |
|
||||||
|
|
||||||
switch (_mediaPlayer.m_StereoPacking) |
|
||||||
{ |
|
||||||
case StereoPacking.None: |
|
||||||
break; |
|
||||||
case StereoPacking.LeftRight: |
|
||||||
case StereoPacking.TopBottom: |
|
||||||
result = _shaderStereoPacking; |
|
||||||
break; |
|
||||||
} |
|
||||||
|
|
||||||
switch (_mediaPlayer.m_AlphaPacking) |
|
||||||
{ |
|
||||||
case AlphaPacking.None: |
|
||||||
break; |
|
||||||
case AlphaPacking.LeftRight: |
|
||||||
case AlphaPacking.TopBottom: |
|
||||||
result = _shaderAlphaPacking; |
|
||||||
break; |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
if (result == null && _mediaPlayer.Info != null) |
|
||||||
{ |
|
||||||
if (QualitySettings.activeColorSpace == ColorSpace.Linear && !_mediaPlayer.Info.PlayerSupportsLinearColorSpace()) |
|
||||||
{ |
|
||||||
result = _shaderAlphaPacking; |
|
||||||
} |
|
||||||
} |
|
||||||
#endif |
|
||||||
if (result == null && _mediaPlayer.TextureProducer != null && _mediaPlayer.TextureProducer.GetTextureCount() == 2) |
|
||||||
{ |
|
||||||
result = _shaderAlphaPacking; |
|
||||||
} |
|
||||||
|
|
||||||
#if REAL_ANDROID |
|
||||||
if (_mediaPlayer.PlatformOptionsAndroid.useFastOesPath) |
|
||||||
{ |
|
||||||
result = _shaderAndroidOES; |
|
||||||
} |
|
||||||
#endif |
|
||||||
return result; |
|
||||||
} |
|
||||||
|
|
||||||
/// <summary> |
|
||||||
/// Returns the texture used to draw this Graphic. |
|
||||||
/// </summary> |
|
||||||
public override Texture mainTexture |
|
||||||
{ |
|
||||||
get |
|
||||||
{ |
|
||||||
Texture result = Texture2D.whiteTexture; |
|
||||||
if (HasValidTexture()) |
|
||||||
{ |
|
||||||
Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[0]; |
|
||||||
result = _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
if (_noDefaultDisplay) |
|
||||||
{ |
|
||||||
result = null; |
|
||||||
} |
|
||||||
else if (_defaultTexture != null) |
|
||||||
{ |
|
||||||
result = _defaultTexture; |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_EDITOR |
|
||||||
if (result == null && _displayInEditor) |
|
||||||
{ |
|
||||||
result = Resources.Load<Texture2D>("AVProVideoIcon"); |
|
||||||
} |
|
||||||
#endif |
|
||||||
} |
|
||||||
return result; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public bool HasValidTexture() |
|
||||||
{ |
|
||||||
return (_mediaPlayer != null && _mediaPlayer.TextureProducer != null && _mediaPlayer.TextureProducer.GetTexture() != null); |
|
||||||
} |
|
||||||
|
|
||||||
private void UpdateInternalMaterial() |
|
||||||
{ |
|
||||||
if (_mediaPlayer != null) |
|
||||||
{ |
|
||||||
// Get required shader |
|
||||||
Shader currentShader = null; |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
currentShader = _material.shader; |
|
||||||
} |
|
||||||
Shader nextShader = GetRequiredShader(); |
|
||||||
|
|
||||||
// If the shader requirement has changed |
|
||||||
if (currentShader != nextShader) |
|
||||||
{ |
|
||||||
// Destroy existing material |
|
||||||
if (_material != null) |
|
||||||
{ |
|
||||||
this.material = null; |
|
||||||
#if UNITY_EDITOR |
|
||||||
Material.DestroyImmediate(_material); |
|
||||||
#else |
|
||||||
Material.Destroy(_material); |
|
||||||
#endif |
|
||||||
_material = null; |
|
||||||
} |
|
||||||
|
|
||||||
// Create new material |
|
||||||
if (nextShader != null) |
|
||||||
{ |
|
||||||
_material = new Material(nextShader); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
this.material = _material; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() |
|
||||||
void LateUpdate() |
|
||||||
{ |
|
||||||
if (_setNativeSize) |
|
||||||
{ |
|
||||||
SetNativeSize(); |
|
||||||
} |
|
||||||
|
|
||||||
if (_lastTexture != mainTexture) |
|
||||||
{ |
|
||||||
_lastTexture = mainTexture; |
|
||||||
SetVerticesDirty(); |
|
||||||
SetMaterialDirty(); |
|
||||||
} |
|
||||||
|
|
||||||
if (HasValidTexture()) |
|
||||||
{ |
|
||||||
if (mainTexture != null) |
|
||||||
{ |
|
||||||
if (mainTexture.width != _lastWidth || mainTexture.height != _lastHeight) |
|
||||||
{ |
|
||||||
_lastWidth = mainTexture.width; |
|
||||||
_lastHeight = mainTexture.height; |
|
||||||
SetVerticesDirty(); |
|
||||||
SetMaterialDirty(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (!_userMaterial && Application.isPlaying) |
|
||||||
{ |
|
||||||
UpdateInternalMaterial(); |
|
||||||
} |
|
||||||
|
|
||||||
if (material != null && _mediaPlayer != null) |
|
||||||
{ |
|
||||||
// YpCbCr support |
|
||||||
if (material.HasProperty(_propUseYpCbCr) && _mediaPlayer.TextureProducer != null && _mediaPlayer.TextureProducer.GetTextureCount() == 2) |
|
||||||
{ |
|
||||||
material.EnableKeyword("USE_YPCBCR"); |
|
||||||
material.SetMatrix(_propYpCbCrTransform, _mediaPlayer.TextureProducer.GetYpCbCrTransform()); |
|
||||||
Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[1]; |
|
||||||
material.SetTexture(_propChromaTex, _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(1)); |
|
||||||
} |
|
||||||
|
|
||||||
// Apply changes for alpha videos |
|
||||||
if (material.HasProperty(_propAlphaPack)) |
|
||||||
{ |
|
||||||
Helper.SetupAlphaPackedMaterial(material, _mediaPlayer.m_AlphaPacking); |
|
||||||
|
|
||||||
if (_flipY && _mediaPlayer.m_AlphaPacking != AlphaPacking.None) |
|
||||||
{ |
|
||||||
material.SetFloat(_propVertScale, -1f); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
material.SetFloat(_propVertScale, 1f); |
|
||||||
} |
|
||||||
|
|
||||||
#if UNITY_UGUI_NOSET_TEXELSIZE |
|
||||||
if (mainTexture != null) |
|
||||||
{ |
|
||||||
material.SetVector(_propMainTextureTexelSize, new Vector4(1.0f / mainTexture.width, 1.0f / mainTexture.height, mainTexture.width, mainTexture.height)); |
|
||||||
} |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
// Apply changes for stereo videos |
|
||||||
if (material.HasProperty(_propStereo)) |
|
||||||
{ |
|
||||||
Helper.SetupStereoMaterial(material, _mediaPlayer.m_StereoPacking, _mediaPlayer.m_DisplayDebugStereoColorTint); |
|
||||||
} |
|
||||||
#if UNITY_PLATFORM_SUPPORTS_LINEAR |
|
||||||
if (material.HasProperty(_propApplyGamma) && _mediaPlayer.Info != null) |
|
||||||
{ |
|
||||||
Helper.SetupGammaMaterial(material, _mediaPlayer.Info.PlayerSupportsLinearColorSpace()); |
|
||||||
} |
|
||||||
#else |
|
||||||
_propApplyGamma |= 0; |
|
||||||
#endif |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/// <summary> |
|
||||||
/// Texture to be used. |
|
||||||
/// </summary> |
|
||||||
public MediaPlayer CurrentMediaPlayer |
|
||||||
{ |
|
||||||
get |
|
||||||
{ |
|
||||||
return _mediaPlayer; |
|
||||||
} |
|
||||||
set |
|
||||||
{ |
|
||||||
if (_mediaPlayer != value) |
|
||||||
{ |
|
||||||
_mediaPlayer = value; |
|
||||||
//SetVerticesDirty(); |
|
||||||
SetMaterialDirty(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/// <summary> |
|
||||||
/// UV rectangle used by the texture. |
|
||||||
/// </summary> |
|
||||||
public Rect uvRect |
|
||||||
{ |
|
||||||
get |
|
||||||
{ |
|
||||||
return m_UVRect; |
|
||||||
} |
|
||||||
set |
|
||||||
{ |
|
||||||
if (m_UVRect == value) |
|
||||||
{ |
|
||||||
return; |
|
||||||
} |
|
||||||
m_UVRect = value; |
|
||||||
SetVerticesDirty(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/// <summary> |
|
||||||
/// Adjust the scale of the Graphic to make it pixel-perfect. |
|
||||||
/// </summary> |
|
||||||
[ContextMenu("Set Native Size")] |
|
||||||
public override void SetNativeSize() |
|
||||||
{ |
|
||||||
Texture tex = mainTexture; |
|
||||||
if (tex != null) |
|
||||||
{ |
|
||||||
int w = Mathf.RoundToInt(tex.width * uvRect.width); |
|
||||||
int h = Mathf.RoundToInt(tex.height * uvRect.height); |
|
||||||
|
|
||||||
if (_mediaPlayer != null) |
|
||||||
{ |
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
if (_mediaPlayer.Info != null) |
|
||||||
{ |
|
||||||
Orientation ori = Helper.GetOrientation(_mediaPlayer.Info.GetTextureTransform()); |
|
||||||
if (ori == Orientation.Portrait || ori == Orientation.PortraitFlipped) |
|
||||||
{ |
|
||||||
w = Mathf.RoundToInt(tex.height * uvRect.width); |
|
||||||
h = Mathf.RoundToInt(tex.width * uvRect.height); |
|
||||||
} |
|
||||||
} |
|
||||||
#endif |
|
||||||
if (_mediaPlayer.m_AlphaPacking == AlphaPacking.LeftRight || _mediaPlayer.m_StereoPacking == StereoPacking.LeftRight) |
|
||||||
{ |
|
||||||
w /= 2; |
|
||||||
} |
|
||||||
else if (_mediaPlayer.m_AlphaPacking == AlphaPacking.TopBottom || _mediaPlayer.m_StereoPacking == StereoPacking.TopBottom) |
|
||||||
{ |
|
||||||
h /= 2; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
rectTransform.anchorMax = rectTransform.anchorMin; |
|
||||||
rectTransform.sizeDelta = new Vector2(w, h); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/// <summary> |
|
||||||
/// Update all renderer data. |
|
||||||
/// </summary> |
|
||||||
// OnFillVBO deprecated by 5.2 |
|
||||||
// OnPopulateMesh(Mesh mesh) deprecated by 5.2 patch 1 |
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2_0) |
|
||||||
/* protected override void OnPopulateMesh(Mesh mesh) |
|
||||||
{ |
|
||||||
List<UIVertex> verts = new List<UIVertex>(); |
|
||||||
_OnFillVBO( verts ); |
|
||||||
|
|
||||||
var quad = new UIVertex[4]; |
|
||||||
for (int i = 0; i < vbo.Count; i += 4) |
|
||||||
{ |
|
||||||
vbo.CopyTo(i, quad, 0, 4); |
|
||||||
vh.AddUIVertexQuad(quad); |
|
||||||
} |
|
||||||
vh.FillMesh( toFill ); |
|
||||||
}*/ |
|
||||||
|
|
||||||
#if !UNITY_5_2_1 |
|
||||||
protected override void OnPopulateMesh(VertexHelper vh) |
|
||||||
{ |
|
||||||
vh.Clear(); |
|
||||||
|
|
||||||
_OnFillVBO(_vertices); |
|
||||||
|
|
||||||
vh.AddUIVertexStream(_vertices, QuadIndices ); |
|
||||||
} |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1) |
|
||||||
[System.Obsolete("This method is not called from Unity 5.2 and above")] |
|
||||||
#endif |
|
||||||
protected override void OnFillVBO(List<UIVertex> vbo) |
|
||||||
{ |
|
||||||
_OnFillVBO(vbo); |
|
||||||
} |
|
||||||
|
|
||||||
private void _OnFillVBO(List<UIVertex> vbo) |
|
||||||
{ |
|
||||||
_flipY = false; |
|
||||||
if (HasValidTexture()) |
|
||||||
{ |
|
||||||
_flipY = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); |
|
||||||
} |
|
||||||
|
|
||||||
Rect uvRect = m_UVRect; |
|
||||||
Vector4 v = GetDrawingDimensions(_scaleMode, ref uvRect); |
|
||||||
|
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
Matrix4x4 m = Matrix4x4.identity; |
|
||||||
if (HasValidTexture()) |
|
||||||
{ |
|
||||||
m = Helper.GetMatrixForOrientation(Helper.GetOrientation(_mediaPlayer.Info.GetTextureTransform())); |
|
||||||
} |
|
||||||
#endif |
|
||||||
vbo.Clear(); |
|
||||||
|
|
||||||
var vert = UIVertex.simpleVert; |
|
||||||
vert.color = color; |
|
||||||
|
|
||||||
vert.position = new Vector2(v.x, v.y); |
|
||||||
|
|
||||||
vert.uv0 = new Vector2(uvRect.xMin, uvRect.yMin); |
|
||||||
if (_flipY) |
|
||||||
{ |
|
||||||
vert.uv0 = new Vector2(uvRect.xMin, 1.0f - uvRect.yMin); |
|
||||||
} |
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
vert.uv0 = m.MultiplyPoint3x4(vert.uv0); |
|
||||||
#endif |
|
||||||
vbo.Add(vert); |
|
||||||
|
|
||||||
vert.position = new Vector2(v.x, v.w); |
|
||||||
vert.uv0 = new Vector2(uvRect.xMin, uvRect.yMax); |
|
||||||
if (_flipY) |
|
||||||
{ |
|
||||||
vert.uv0 = new Vector2(uvRect.xMin, 1.0f - uvRect.yMax); |
|
||||||
} |
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
vert.uv0 = m.MultiplyPoint3x4(vert.uv0); |
|
||||||
#endif |
|
||||||
vbo.Add(vert); |
|
||||||
|
|
||||||
vert.position = new Vector2(v.z, v.w); |
|
||||||
vert.uv0 = new Vector2(uvRect.xMax, uvRect.yMax); |
|
||||||
if (_flipY) |
|
||||||
{ |
|
||||||
vert.uv0 = new Vector2(uvRect.xMax, 1.0f - uvRect.yMax); |
|
||||||
} |
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
vert.uv0 = m.MultiplyPoint3x4(vert.uv0); |
|
||||||
#endif |
|
||||||
vbo.Add(vert); |
|
||||||
|
|
||||||
vert.position = new Vector2(v.z, v.y); |
|
||||||
vert.uv0 = new Vector2(uvRect.xMax, uvRect.yMin); |
|
||||||
if (_flipY) |
|
||||||
{ |
|
||||||
vert.uv0 = new Vector2(uvRect.xMax, 1.0f - uvRect.yMin); |
|
||||||
} |
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
vert.uv0 = m.MultiplyPoint3x4(vert.uv0); |
|
||||||
#endif |
|
||||||
vbo.Add(vert); |
|
||||||
} |
|
||||||
|
|
||||||
private Vector4 GetDrawingDimensions(ScaleMode scaleMode, ref Rect uvRect) |
|
||||||
{ |
|
||||||
Vector4 returnSize = Vector4.zero; |
|
||||||
|
|
||||||
if (mainTexture != null) |
|
||||||
{ |
|
||||||
var padding = Vector4.zero; |
|
||||||
|
|
||||||
var textureSize = new Vector2(mainTexture.width, mainTexture.height); |
|
||||||
{ |
|
||||||
// Adjust textureSize based on orientation |
|
||||||
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS |
|
||||||
if (HasValidTexture()) |
|
||||||
{ |
|
||||||
Matrix4x4 m = Helper.GetMatrixForOrientation(Helper.GetOrientation(_mediaPlayer.Info.GetTextureTransform())); |
|
||||||
textureSize = m.MultiplyVector(textureSize); |
|
||||||
textureSize.x = Mathf.Abs(textureSize.x); |
|
||||||
textureSize.y = Mathf.Abs(textureSize.y); |
|
||||||
} |
|
||||||
#endif |
|
||||||
// Adjust textureSize based on alpha packing |
|
||||||
if (_mediaPlayer != null) |
|
||||||
{ |
|
||||||
if (_mediaPlayer.m_AlphaPacking == AlphaPacking.LeftRight || _mediaPlayer.m_StereoPacking == StereoPacking.LeftRight) |
|
||||||
{ |
|
||||||
textureSize.x /= 2f; |
|
||||||
} |
|
||||||
else if (_mediaPlayer.m_AlphaPacking == AlphaPacking.TopBottom || _mediaPlayer.m_StereoPacking == StereoPacking.TopBottom) |
|
||||||
{ |
|
||||||
textureSize.y /= 2f; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
Rect r = GetPixelAdjustedRect(); |
|
||||||
|
|
||||||
// Fit the above textureSize into rectangle r |
|
||||||
int spriteW = Mathf.RoundToInt( textureSize.x ); |
|
||||||
int spriteH = Mathf.RoundToInt( textureSize.y ); |
|
||||||
|
|
||||||
var size = new Vector4( padding.x / spriteW, |
|
||||||
padding.y / spriteH, |
|
||||||
(spriteW - padding.z) / spriteW, |
|
||||||
(spriteH - padding.w) / spriteH ); |
|
||||||
|
|
||||||
|
|
||||||
{ |
|
||||||
if (textureSize.sqrMagnitude > 0.0f) |
|
||||||
{ |
|
||||||
if (scaleMode == ScaleMode.ScaleToFit) |
|
||||||
{ |
|
||||||
float spriteRatio = textureSize.x / textureSize.y; |
|
||||||
float rectRatio = r.width / r.height; |
|
||||||
|
|
||||||
if (spriteRatio > rectRatio) |
|
||||||
{ |
|
||||||
float oldHeight = r.height; |
|
||||||
r.height = r.width * (1.0f / spriteRatio); |
|
||||||
r.y += (oldHeight - r.height) * rectTransform.pivot.y; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
float oldWidth = r.width; |
|
||||||
r.width = r.height * spriteRatio; |
|
||||||
r.x += (oldWidth - r.width) * rectTransform.pivot.x; |
|
||||||
} |
|
||||||
} |
|
||||||
else if (scaleMode == ScaleMode.ScaleAndCrop) |
|
||||||
{ |
|
||||||
float aspectRatio = textureSize.x / textureSize.y; |
|
||||||
float screenRatio = r.width / r.height; |
|
||||||
if (screenRatio > aspectRatio) |
|
||||||
{ |
|
||||||
float adjust = aspectRatio / screenRatio; |
|
||||||
uvRect = new Rect(0f, (1f - adjust) * 0.5f, 1f, adjust); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
float adjust = screenRatio / aspectRatio; |
|
||||||
uvRect = new Rect(0.5f - adjust * 0.5f, 0f, adjust, 1f); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
returnSize = new Vector4( r.x + r.width * size.x, |
|
||||||
r.y + r.height * size.y, |
|
||||||
r.x + r.width * size.z, |
|
||||||
r.y + r.height * size.w ); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
return returnSize; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
#endif |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 0f17cdc186456a4469a139a104d2ca72 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 638c870cac4da414fba921606d504407 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: e9ea31f33222f4b418e4e051a8a5ed24 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 0a25ab4952e3b924c8d193758f43e236 |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 2d4bbe43657314a49a5f730e66dafebd |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 1d0986c1ab4c9b24fae2420421f4463f |
|
||||||
folderAsset: yes |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 2cdcd5c0df033154a8ee88d8ef66a304 |
|
||||||
folderAsset: yes |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
@ -1,182 +0,0 @@ |
|||||||
//#define NGUI |
|
||||||
using UnityEngine; |
|
||||||
using System.Collections; |
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. |
|
||||||
//----------------------------------------------------------------------------- |
|
||||||
|
|
||||||
#if NGUI |
|
||||||
namespace RenderHeads.Media.AVProVideo |
|
||||||
{ |
|
||||||
/// <summary> |
|
||||||
/// Integrates AVPro Video with NGUI |
|
||||||
/// Applies the video texture to the NGUI UITexture component |
|
||||||
/// </summary> |
|
||||||
[AddComponentMenu("AVPro Video/Display NGUI")] |
|
||||||
public class ApplyToTextureWidgetNGUI : MonoBehaviour |
|
||||||
{ |
|
||||||
#region Fields |
|
||||||
[SerializeField] |
|
||||||
private UITexture _uiTexture = null; |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private MediaPlayer _mediaPlayer = null; |
|
||||||
|
|
||||||
public MediaPlayer Player |
|
||||||
{ |
|
||||||
get { return _mediaPlayer; } |
|
||||||
set { if (_mediaPlayer != value) { ChangeMediaPlayer(value); _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private Texture2D _defaultTexture; |
|
||||||
|
|
||||||
public Texture2D DefaultTexture |
|
||||||
{ |
|
||||||
get { return _defaultTexture; } |
|
||||||
set { if (_defaultTexture != value) { _defaultTexture = value; _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
[SerializeField] |
|
||||||
private bool _makePixelPerfect = false; |
|
||||||
|
|
||||||
public bool MakePixelPerfect |
|
||||||
{ |
|
||||||
get { return _makePixelPerfect; } |
|
||||||
set { if (_makePixelPerfect != value) { _makePixelPerfect = value; _isDirty = true; } } |
|
||||||
} |
|
||||||
|
|
||||||
private bool _isDirty; |
|
||||||
private Texture _lastTextureApplied; |
|
||||||
#endregion |
|
||||||
|
|
||||||
private void TryUpdateTexture() |
|
||||||
{ |
|
||||||
bool applied = false; |
|
||||||
|
|
||||||
// Try to apply texture from media |
|
||||||
if (_mediaPlayer != null && _mediaPlayer.TextureProducer != null) |
|
||||||
{ |
|
||||||
Texture texture = _mediaPlayer.TextureProducer.GetTexture(); |
|
||||||
if (texture != null) |
|
||||||
{ |
|
||||||
// Check for changing texture |
|
||||||
if (texture != _lastTextureApplied) |
|
||||||
{ |
|
||||||
_isDirty = true; |
|
||||||
} |
|
||||||
|
|
||||||
if (_isDirty) |
|
||||||
{ |
|
||||||
Apply(texture, _mediaPlayer.TextureProducer.RequiresVerticalFlip()); |
|
||||||
} |
|
||||||
applied = true; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// If the media didn't apply a texture, then try to apply the default texture |
|
||||||
if (!applied) |
|
||||||
{ |
|
||||||
if (_defaultTexture != _lastTextureApplied) |
|
||||||
{ |
|
||||||
_isDirty = true; |
|
||||||
} |
|
||||||
if (_isDirty) |
|
||||||
{ |
|
||||||
Apply(_defaultTexture, false); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void Apply(Texture texture, bool requiresYFlip) |
|
||||||
{ |
|
||||||
if (_uiTexture != null) |
|
||||||
{ |
|
||||||
_isDirty = false; |
|
||||||
if (requiresYFlip) |
|
||||||
{ |
|
||||||
_uiTexture.flip = UITexture.Flip.Vertically; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
_uiTexture.flip = UITexture.Flip.Nothing; |
|
||||||
} |
|
||||||
|
|
||||||
_lastTextureApplied = _uiTexture.mainTexture = texture; |
|
||||||
|
|
||||||
if (_makePixelPerfect) |
|
||||||
{ |
|
||||||
_uiTexture.MakePixelPerfect(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void ChangeMediaPlayer(MediaPlayer newPlayer) |
|
||||||
{ |
|
||||||
// When changing the media player, handle event subscriptions |
|
||||||
if (_mediaPlayer != null) |
|
||||||
{ |
|
||||||
_mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); |
|
||||||
_mediaPlayer = null; |
|
||||||
} |
|
||||||
|
|
||||||
_mediaPlayer = newPlayer; |
|
||||||
if (_mediaPlayer != null) |
|
||||||
{ |
|
||||||
_mediaPlayer.Events.AddListener(OnMediaPlayerEvent); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// Callback function to handle events |
|
||||||
private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) |
|
||||||
{ |
|
||||||
switch (et) |
|
||||||
{ |
|
||||||
case MediaPlayerEvent.EventType.Closing: |
|
||||||
Apply(_defaultTexture, false); |
|
||||||
break; |
|
||||||
case MediaPlayerEvent.EventType.Started: |
|
||||||
case MediaPlayerEvent.EventType.FirstFrameReady: |
|
||||||
TryUpdateTexture(); |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void Start() |
|
||||||
{ |
|
||||||
if (_defaultTexture == null) |
|
||||||
{ |
|
||||||
_defaultTexture = Texture2D.blackTexture; |
|
||||||
} |
|
||||||
ChangeMediaPlayer(_mediaPlayer); |
|
||||||
} |
|
||||||
|
|
||||||
void Update() |
|
||||||
{ |
|
||||||
TryUpdateTexture(); |
|
||||||
} |
|
||||||
|
|
||||||
// We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() |
|
||||||
void LateUpdate() |
|
||||||
{ |
|
||||||
TryUpdateTexture(); |
|
||||||
} |
|
||||||
|
|
||||||
void OnEnable() |
|
||||||
{ |
|
||||||
TryUpdateTexture(); |
|
||||||
} |
|
||||||
|
|
||||||
void OnDisable() |
|
||||||
{ |
|
||||||
Apply(_defaultTexture, false); |
|
||||||
} |
|
||||||
|
|
||||||
void OnDestroy() |
|
||||||
{ |
|
||||||
ChangeMediaPlayer(null); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
#endif |
|
||||||
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 706300e4503130449aa3a10d0b54516d |
|
||||||
MonoImporter: |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} |
|
||||||
userData: |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 9d82b8b5ea0494b3992233eb5e47a12f |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1490962214 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: e534f83f7f15547868b8cbc8ce335151 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1490962219 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue