From ef458a75979f5cff410c0cfb6c8f4c6bd95a3bf5 Mon Sep 17 00:00:00 2001 From: freezy Date: Tue, 5 Oct 2021 00:03:30 +0200 Subject: [PATCH 1/4] lights: Add insert prefab. --- .../Resources/Prefabs/Light - Insert.prefab | 207 ++++++++++++++++++ .../Prefabs/Light - Insert.prefab.meta | 7 + Assets/Resources/Prefabs/Light.prefab | 56 ----- Runtime/LightConverter.cs | 18 +- Runtime/PrefabProvider.cs | 5 + 5 files changed, 236 insertions(+), 57 deletions(-) create mode 100644 Assets/Resources/Prefabs/Light - Insert.prefab create mode 100644 Assets/Resources/Prefabs/Light - Insert.prefab.meta diff --git a/Assets/Resources/Prefabs/Light - Insert.prefab b/Assets/Resources/Prefabs/Light - Insert.prefab new file mode 100644 index 0000000..f359930 --- /dev/null +++ b/Assets/Resources/Prefabs/Light - Insert.prefab @@ -0,0 +1,207 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &550864702806823459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2649789736405374282} + - component: {fileID: 4750229237398323307} + m_Layer: 0 + m_Name: Light - Insert + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2649789736405374282 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550864702806823459} + 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: 179995335602121591} + - {fileID: 4222681214933490337} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4750229237398323307 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550864702806823459} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9e53d77b7d585c94b89513d95571354e, type: 3} + m_Name: + m_EditorClassIdentifier: + _isLocked: 0 + _editorLayer: 0 + _editorLayerName: + _editorLayerVisibility: 1 + Position: {x: 0, y: 0, z: 0} + _surface: {fileID: 0} + BulbSize: 20 + State: 0 + BlinkPattern: + BlinkInterval: 0 + FadeSpeedUp: 0 + FadeSpeedDown: 0 +--- !u!1 &5987759878404274838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 179995335602121591} + - component: {fileID: 4762606870770787496} + - component: {fileID: 5251209611439210537} + m_Layer: 0 + m_Name: Insert + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &179995335602121591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5987759878404274838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: -0, z: 0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2649789736405374282} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4762606870770787496 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5987759878404274838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2a11a120b7da4b4db6fd330516311db, type: 3} + m_Name: + m_EditorClassIdentifier: + InsertHeight: 20 + PositionZ: 0.1 + _dragPoints: [] +--- !u!33 &5251209611439210537 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5987759878404274838} + m_Mesh: {fileID: 0} +--- !u!1 &7031967719973800860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4222681214933490337} + - component: {fileID: 1799189321192003275} + m_Layer: 0 + m_Name: Source + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4222681214933490337 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7031967719973800860} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -50} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2649789736405374282} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1799189321192003275 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7031967719973800860} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 0 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1155.2686 + m_Range: 0.1 + m_SpotAngle: 75 + m_InnerSpotAngle: 1 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 2 + m_AreaSize: {x: 0.5, y: 0.5} + m_BounceIntensity: 1 + m_ColorTemperature: 2700 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0.01 + m_ShadowAngle: 0 diff --git a/Assets/Resources/Prefabs/Light - Insert.prefab.meta b/Assets/Resources/Prefabs/Light - Insert.prefab.meta new file mode 100644 index 0000000..230dff6 --- /dev/null +++ b/Assets/Resources/Prefabs/Light - Insert.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 139198c3e54624844b1a030306305a0d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Light.prefab b/Assets/Resources/Prefabs/Light.prefab index a062210..a50f6c1 100644 --- a/Assets/Resources/Prefabs/Light.prefab +++ b/Assets/Resources/Prefabs/Light.prefab @@ -93,61 +93,6 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!1 &6668087499752519847 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 668676724496252522} - - component: {fileID: 4270132360562549902} - - component: {fileID: 8432211507712617245} - m_Layer: 0 - m_Name: Insert - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &668676724496252522 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6668087499752519847} - 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: 8610125003353710624} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4270132360562549902 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6668087499752519847} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2a11a120b7da4b4db6fd330516311db, type: 3} - m_Name: - m_EditorClassIdentifier: - InsertHeight: 20 - PositionZ: 0 - _dragPoints: [] ---- !u!33 &8432211507712617245 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6668087499752519847} - m_Mesh: {fileID: 0} --- !u!1 &6671583051311971504 GameObject: m_ObjectHideFlags: 0 @@ -179,7 +124,6 @@ Transform: - {fileID: 87034997330278711} - {fileID: 3512352900261141159} - {fileID: 1496204463163538612} - - {fileID: 668676724496252522} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Runtime/LightConverter.cs b/Runtime/LightConverter.cs index 18ef836..82be805 100644 --- a/Runtime/LightConverter.cs +++ b/Runtime/LightConverter.cs @@ -25,7 +25,7 @@ namespace VisualPinball.Unity.Urp { public class LightConverter : ILightConverter { - public void UpdateLight(Light light, LightData data) + public void UpdateLight(Light light, LightData data, bool isInsert) { // Set color and position light.color = data.Color2.ToUnityColor(); @@ -39,5 +39,21 @@ public void UpdateLight(Light light, LightData data) light.shadowBias = 0f; light.shadowNearPlane = 0f; } + + public void SetColor(Light light, Color color) + { + light.color = color; + } + + public void SetIntensity(Light light, float intensityLumen) + { + light.intensity = intensityLumen; + } + + public void SpotLight(Light light, float outer, float innerPercent) + { + light.spotAngle = outer; + light.innerSpotAngle = outer * innerPercent * 0.01f; + } } } diff --git a/Runtime/PrefabProvider.cs b/Runtime/PrefabProvider.cs index c94dddf..2498cd2 100644 --- a/Runtime/PrefabProvider.cs +++ b/Runtime/PrefabProvider.cs @@ -70,6 +70,11 @@ public GameObject CreateLight() return Resources.Load("Prefabs/Light"); } + public GameObject CreateInsertLight() + { + return Resources.Load("Prefabs/Light - Insert"); + } + public GameObject CreateSpinner() { return Resources.Load("Prefabs/Spinner"); From 1ebe1f95458ef2b41698b4a2b044d10c70d04739 Mon Sep 17 00:00:00 2001 From: freezy Date: Mon, 11 Oct 2021 00:02:05 +0200 Subject: [PATCH 2/4] update: Add new methods. --- Runtime/LightConverter.cs | 16 ++++++++++++++++ Runtime/MaterialConverter.cs | 18 ++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/Runtime/LightConverter.cs b/Runtime/LightConverter.cs index 82be805..200bf2c 100644 --- a/Runtime/LightConverter.cs +++ b/Runtime/LightConverter.cs @@ -45,15 +45,31 @@ public void SetColor(Light light, Color color) light.color = color; } + public void SetShadow(Light light, bool enabled, bool isDynamic, float nearPlane = 0.01f) + { + light.shadows = enabled ? LightShadows.Soft : LightShadows.None; + light.shadowNearPlane = nearPlane; + } + public void SetIntensity(Light light, float intensityLumen) { light.intensity = intensityLumen; } + public void SetTemperature(Light light, float temperature) + { + // todo + } + public void SpotLight(Light light, float outer, float innerPercent) { light.spotAngle = outer; light.innerSpotAngle = outer * innerPercent * 0.01f; } + + public void PyramidAngle(Light light, float angle, float aspectRatio) + { + // urp has no pyramid spot light + } } } diff --git a/Runtime/MaterialConverter.cs b/Runtime/MaterialConverter.cs index 667ecb6..3b76f87 100644 --- a/Runtime/MaterialConverter.cs +++ b/Runtime/MaterialConverter.cs @@ -23,7 +23,6 @@ using UnityEngine; using VisualPinball.Engine.VPT; using Material = UnityEngine.Material; -using Mesh = VisualPinball.Engine.VPT.Mesh; namespace VisualPinball.Unity.Urp { @@ -109,7 +108,7 @@ public Material CreateMaterial(PbrMaterial vpxMaterial, ITextureProvider texture unityMaterial.SetFloat(Metallic, metallicValue); // roughness / glossiness - unityMaterial.SetFloat(Smoothness, vpxMaterial.Roughness); + SetSmoothness(unityMaterial, vpxMaterial.Roughness); // map if (vpxMaterial.HasMap) { @@ -127,6 +126,11 @@ public Material CreateMaterial(PbrMaterial vpxMaterial, ITextureProvider texture return unityMaterial; } + public void SetSmoothness(Material material, float smoothness) + { + material.SetFloat(Smoothness, smoothness); + } + public Material MergeMaterials(PbrMaterial vpxMaterial, Material texturedMaterial) { var nonTexturedMaterial = CreateMaterial(vpxMaterial, null); @@ -140,5 +144,15 @@ public Material MergeMaterials(PbrMaterial vpxMaterial, Material texturedMateria return mergedMaterial; } + + public void SetDiffusionProfile(Material material, DiffusionProfileTemplate template) + { + // todo + } + + public void SetMaterialType(Material material, MaterialType materialType) + { + // todo + } } } From 1ee640bf90f12708ae1776c7a837dcd6267bbec3 Mon Sep 17 00:00:00 2001 From: freezy Date: Tue, 12 Oct 2021 00:02:43 +0200 Subject: [PATCH 3/4] lights: Disable intensity due to black render. --- Runtime/LightConverter.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Runtime/LightConverter.cs b/Runtime/LightConverter.cs index 200bf2c..1081414 100644 --- a/Runtime/LightConverter.cs +++ b/Runtime/LightConverter.cs @@ -35,9 +35,9 @@ public void UpdateLight(Light light, LightData data, bool isInsert) light.transform.localPosition = new Vector3(0f, 0f, 25f); // TODO: vpe specific shadow settings - light.shadows = LightShadows.Hard; + light.shadows = LightShadows.None; light.shadowBias = 0f; - light.shadowNearPlane = 0f; + light.shadowNearPlane = 0.001f; } public void SetColor(Light light, Color color) @@ -47,15 +47,16 @@ public void SetColor(Light light, Color color) public void SetShadow(Light light, bool enabled, bool isDynamic, float nearPlane = 0.01f) { - light.shadows = enabled ? LightShadows.Soft : LightShadows.None; - light.shadowNearPlane = nearPlane; + // light.shadows = enabled ? LightShadows.Soft : LightShadows.None; + // light.shadowNearPlane = nearPlane; } public void SetIntensity(Light light, float intensityLumen) { - light.intensity = intensityLumen; + //light.intensity = intensityLumen / 1000f; } + public void SetTemperature(Light light, float temperature) { // todo From 7961a24c0b5fe7df887af347fe476b07a6242165 Mon Sep 17 00:00:00 2001 From: freezy Date: Mon, 18 Oct 2021 00:15:45 +0200 Subject: [PATCH 4/4] api: Add SetRange(). --- Runtime/LightConverter.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Runtime/LightConverter.cs b/Runtime/LightConverter.cs index 1081414..5862644 100644 --- a/Runtime/LightConverter.cs +++ b/Runtime/LightConverter.cs @@ -50,6 +50,10 @@ public void SetShadow(Light light, bool enabled, bool isDynamic, float nearPlane // light.shadows = enabled ? LightShadows.Soft : LightShadows.None; // light.shadowNearPlane = nearPlane; } + public void SetRange(Light light, float range) + { + light.range = range; + } public void SetIntensity(Light light, float intensityLumen) {