mirror of
https://github.com/appen-isen/jeu-sans-image.git
synced 2026-01-18 16:47:37 +01:00
Basic map creator
Basic map creation from a svg file (AI generated)
This commit is contained in:
8
Assets/Editor.meta
Normal file
8
Assets/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0007f25b1fa247d40922e19f7ffa9ae5
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
320
Assets/Editor/SvgToFlatMeshEditor.cs
Normal file
320
Assets/Editor/SvgToFlatMeshEditor.cs
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
// SvgToFlatMeshEditor.cs
|
||||||
|
// Save to Assets/Editor/
|
||||||
|
// Requires com.unity.vectorgraphics package.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using Unity.VectorGraphics; // From com.unity.vectorgraphics
|
||||||
|
|
||||||
|
public class SvgToFlatMeshEditor : EditorWindow
|
||||||
|
{
|
||||||
|
TextAsset svgFile;
|
||||||
|
float pixelsPerUnit = 100.0f;
|
||||||
|
Vector2 scale = Vector2.one;
|
||||||
|
Material defaultMaterial;
|
||||||
|
Transform parentTransform;
|
||||||
|
bool generateColliders = true;
|
||||||
|
float meshScale = 1f;
|
||||||
|
VectorUtils.TessellationOptions tessOptions = new VectorUtils.TessellationOptions()
|
||||||
|
{
|
||||||
|
StepDistance = 1.0f,
|
||||||
|
MaxCordDeviation = 0.5f,
|
||||||
|
MaxTanAngleDeviation = 0.1f,
|
||||||
|
SamplingStepSize = 0.01f
|
||||||
|
};
|
||||||
|
|
||||||
|
[MenuItem("Tools/SVG → Flat Mesh Regions")]
|
||||||
|
static void OpenWindow()
|
||||||
|
{
|
||||||
|
var w = GetWindow<SvgToFlatMeshEditor>("SVG → Flat Mesh");
|
||||||
|
w.minSize = new Vector2(460, 320);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnGUI()
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("SVG → Flat Mesh (separate GameObjects per fill color)", EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
svgFile = (TextAsset)EditorGUILayout.ObjectField("SVG File (.svg)", svgFile, typeof(TextAsset), false);
|
||||||
|
pixelsPerUnit = EditorGUILayout.FloatField(new GUIContent("Pixels Per Unit", "Rasterization scale used by VectorUtils. Higher = more detail"), pixelsPerUnit);
|
||||||
|
meshScale = EditorGUILayout.FloatField(new GUIContent("Global Mesh Scale", "Scale applied to resulting mesh in world units"), meshScale);
|
||||||
|
defaultMaterial = (Material)EditorGUILayout.ObjectField("Default Material", defaultMaterial, typeof(Material), false);
|
||||||
|
parentTransform = (Transform)EditorGUILayout.ObjectField("Parent Transform", parentTransform, typeof(Transform), true);
|
||||||
|
generateColliders = EditorGUILayout.Toggle("Generate MeshColliders", generateColliders);
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
EditorGUILayout.LabelField("Tessellation Options", EditorStyles.boldLabel);
|
||||||
|
tessOptions.StepDistance = EditorGUILayout.FloatField("Step Distance", tessOptions.StepDistance);
|
||||||
|
tessOptions.MaxCordDeviation = EditorGUILayout.FloatField("Max Cord Deviation", tessOptions.MaxCordDeviation);
|
||||||
|
tessOptions.MaxTanAngleDeviation = EditorGUILayout.FloatField("Max Tan Angle Deviation", tessOptions.MaxTanAngleDeviation);
|
||||||
|
tessOptions.SamplingStepSize = EditorGUILayout.FloatField("Sampling Step Size", tessOptions.SamplingStepSize);
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Generate Meshes from SVG"))
|
||||||
|
{
|
||||||
|
if (svgFile == null)
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayDialog("Error", "Please assign an SVG (.svg) TextAsset.", "OK");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
GenerateMeshesFromSVG();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogException(e);
|
||||||
|
EditorUtility.DisplayDialog("Error", "Exception: " + e.Message, "OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
EditorGUILayout.HelpBox("This tool creates one GameObject per fill-color region in the SVG. Each GameObject receives a MeshRenderer + MeshFilter and, optionally, a MeshCollider. Output meshes lie flat on the XZ plane (Y = 0).", MessageType.Info);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenerateMeshesFromSVG()
|
||||||
|
{
|
||||||
|
// Parse SVG
|
||||||
|
var svgText = svgFile.text;
|
||||||
|
if (string.IsNullOrEmpty(svgText))
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayDialog("Error", "SVG file is empty.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sceneInfo = SVGParser.ImportSVG(new StringReader(svgText));
|
||||||
|
if (sceneInfo.Equals(default(SVGParser.SceneInfo)) || sceneInfo.Scene == null)
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayDialog("Error", "Failed to import SVG. Make sure the file is valid and Vector Graphics package is installed.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gather shapes by fill color. We'll traverse the scene tree.
|
||||||
|
var shapesByColor = new Dictionary<Color, List<SceneNodeShapeEntry>>(new ColorEqualityComparer());
|
||||||
|
|
||||||
|
TraverseAndCollectShapes(sceneInfo.Scene.Root, Matrix2D.identity, shapesByColor);
|
||||||
|
|
||||||
|
if (shapesByColor.Count == 0)
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayDialog("Result", "No filled shapes found in the SVG.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create parent container
|
||||||
|
GameObject container = new GameObject(Path.GetFileNameWithoutExtension(svgFile.name) + "_SVG_Meshes");
|
||||||
|
if (parentTransform != null) container.transform.SetParent(parentTransform, false);
|
||||||
|
|
||||||
|
// For each color group, tessellate shapes into geometry and build a mesh
|
||||||
|
foreach (var kv in shapesByColor)
|
||||||
|
{
|
||||||
|
Color color = kv.Key;
|
||||||
|
List<SceneNodeShapeEntry> entries = kv.Value;
|
||||||
|
|
||||||
|
// Build a temporary scene that contains all these shapes combined (preserving transforms)
|
||||||
|
Scene tmpScene = new Scene();
|
||||||
|
tmpScene.Root = new SceneNode();
|
||||||
|
tmpScene.Root.Children = new List<SceneNode>();
|
||||||
|
|
||||||
|
foreach (var entry in entries)
|
||||||
|
{
|
||||||
|
// create a shallow copy Node with transform and the original shapes (the shape objects can be reused)
|
||||||
|
SceneNode copyNode = new SceneNode()
|
||||||
|
{
|
||||||
|
Transform = entry.Node.Transform, // keep transform
|
||||||
|
Shapes = new List<Shape>() { entry.Shape }
|
||||||
|
};
|
||||||
|
tmpScene.Root.Children.Add(copyNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tessellate the tmpScene
|
||||||
|
var geoms = VectorUtils.TessellateScene(tmpScene, tessOptions);
|
||||||
|
|
||||||
|
if (geoms == null || geoms.Count == 0)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"No geometry generated for color {color} (skipping).");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build Mesh from geoms
|
||||||
|
Mesh mesh = BuildMeshFromGeometries(geoms, meshScale);
|
||||||
|
|
||||||
|
// Create GameObject for this color region
|
||||||
|
string colorName = ColorToName(color);
|
||||||
|
GameObject go = new GameObject($"Region_{colorName}");
|
||||||
|
go.transform.SetParent(container.transform, false);
|
||||||
|
|
||||||
|
var mf = go.AddComponent<MeshFilter>();
|
||||||
|
mf.sharedMesh = mesh;
|
||||||
|
|
||||||
|
var mr = go.AddComponent<MeshRenderer>();
|
||||||
|
if (defaultMaterial != null)
|
||||||
|
{
|
||||||
|
// instantiate a material so each region can have its own color without overwriting the original asset
|
||||||
|
Material matInstance = new Material(defaultMaterial);
|
||||||
|
matInstance.color = color;
|
||||||
|
mr.sharedMaterial = matInstance;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Create a quick default material
|
||||||
|
var mat = new Material(Shader.Find("Standard"));
|
||||||
|
mat.color = color;
|
||||||
|
mr.sharedMaterial = mat;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (generateColliders)
|
||||||
|
{
|
||||||
|
var mc = go.AddComponent<MeshCollider>();
|
||||||
|
mc.sharedMesh = mesh;
|
||||||
|
mc.convex = false; // keep non-convex for flat terrain; set to true if needed for rigidbodies
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optionally set layer / tag etc. User can attach audio trigger components later to each go.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Focus selection on created container
|
||||||
|
Selection.activeGameObject = container;
|
||||||
|
EditorUtility.DisplayDialog("Done", $"Generated {shapesByColor.Count} region GameObjects under '{container.name}'.", "OK");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursively traverse scene nodes and collect filled shapes
|
||||||
|
void TraverseAndCollectShapes(SceneNode node, Matrix2D parentTransform, Dictionary<Color, List<SceneNodeShapeEntry>> shapesByColor)
|
||||||
|
{
|
||||||
|
if (node == null) return;
|
||||||
|
|
||||||
|
// Combine transforms (VectorGraphics uses Matrix2D)
|
||||||
|
Matrix2D currentTransform = parentTransform * node.Transform;
|
||||||
|
|
||||||
|
if (node.Shapes != null && node.Shapes.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var shape in node.Shapes)
|
||||||
|
{
|
||||||
|
if (shape == null) continue;
|
||||||
|
// Only treat fills (SolidFill)
|
||||||
|
if (shape.Fill is SolidFill sf)
|
||||||
|
{
|
||||||
|
Color col = sf.Color;
|
||||||
|
// Note: color comes as linear RGBA. Convert to Unity's Color (already same type)
|
||||||
|
if (!shapesByColor.TryGetValue(col, out List<SceneNodeShapeEntry> list))
|
||||||
|
{
|
||||||
|
list = new List<SceneNodeShapeEntry>();
|
||||||
|
shapesByColor[col] = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the shape together with a node that carries the proper transform
|
||||||
|
SceneNode fakeNode = new SceneNode()
|
||||||
|
{
|
||||||
|
Transform = currentTransform,
|
||||||
|
Shapes = new List<Shape>() { shape }
|
||||||
|
};
|
||||||
|
list.Add(new SceneNodeShapeEntry() { Node = fakeNode, Shape = shape });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.Children != null && node.Children.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var c in node.Children)
|
||||||
|
TraverseAndCollectShapes(c, currentTransform, shapesByColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build a Mesh from VectorUtils.Geometry list
|
||||||
|
Mesh BuildMeshFromGeometries(List<VectorUtils.Geometry> geoms, float globalScale)
|
||||||
|
{
|
||||||
|
var verts = new List<Vector3>();
|
||||||
|
var uvs = new List<Vector2>();
|
||||||
|
var indices = new List<int>();
|
||||||
|
|
||||||
|
int baseIndex = 0;
|
||||||
|
foreach (var g in geoms)
|
||||||
|
{
|
||||||
|
if (g == null || g.Vertices == null || g.Indices == null) continue;
|
||||||
|
|
||||||
|
// Add vertices (VectorUtils uses Vector2 for geometry XY)
|
||||||
|
for (int i = 0; i < g.Vertices.Length; i++)
|
||||||
|
{
|
||||||
|
var v2 = g.Vertices[i];
|
||||||
|
// Map XY -> XZ plane; Y = 0
|
||||||
|
Vector3 v3 = new Vector3(v2.x, 0f, v2.y) * globalScale;
|
||||||
|
verts.Add(v3);
|
||||||
|
|
||||||
|
// UVs: If geometry provides UV, use it; otherwise use XY mapped to UV
|
||||||
|
if (g.UVs != null && g.UVs.Length == g.Vertices.Length)
|
||||||
|
uvs.Add(g.UVs[i]);
|
||||||
|
else
|
||||||
|
uvs.Add(new Vector2(v2.x, v2.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add indices (triangles)
|
||||||
|
for (int i = 0; i < g.Indices.Length; i += 3)
|
||||||
|
{
|
||||||
|
// VectorUtils yields triangles in clockwise winding; Unity expects clockwise for front? We'll keep it.
|
||||||
|
indices.Add(baseIndex + g.Indices[i]);
|
||||||
|
indices.Add(baseIndex + g.Indices[i + 1]);
|
||||||
|
indices.Add(baseIndex + g.Indices[i + 2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
baseIndex += g.Vertices.Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
Mesh mesh = new Mesh();
|
||||||
|
mesh.name = "SVG_Mesh";
|
||||||
|
mesh.indexFormat = (verts.Count > 65535) ? UnityEngine.Rendering.IndexFormat.UInt32 : UnityEngine.Rendering.IndexFormat.UInt16;
|
||||||
|
mesh.SetVertices(verts);
|
||||||
|
mesh.SetTriangles(indices, 0);
|
||||||
|
if (uvs != null && uvs.Count == verts.Count)
|
||||||
|
mesh.SetUVs(0, uvs);
|
||||||
|
|
||||||
|
mesh.RecalculateNormals();
|
||||||
|
mesh.RecalculateBounds();
|
||||||
|
|
||||||
|
return mesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper to produce a safe string for color names
|
||||||
|
string ColorToName(Color c)
|
||||||
|
{
|
||||||
|
// Try to present RGBA hex
|
||||||
|
Color32 cc = c;
|
||||||
|
return $"{cc.r:X2}{cc.g:X2}{cc.b:X2}{(cc.a < 255 ? cc.a.ToString("X2") : "")}";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Small helper type to keep a shape and associated node (with transform)
|
||||||
|
class SceneNodeShapeEntry
|
||||||
|
{
|
||||||
|
public SceneNode Node;
|
||||||
|
public Shape Shape;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Simple color comparer for use as Dictionary key
|
||||||
|
class ColorEqualityComparer : IEqualityComparer<Color>
|
||||||
|
{
|
||||||
|
public bool Equals(Color x, Color y)
|
||||||
|
{
|
||||||
|
// Compare with exactness; you could add tolerance if you want near-colors grouped
|
||||||
|
return Mathf.Approximately(x.r, y.r) && Mathf.Approximately(x.g, y.g) &&
|
||||||
|
Mathf.Approximately(x.b, y.b) && Mathf.Approximately(x.a, y.a);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetHashCode(Color obj)
|
||||||
|
{
|
||||||
|
unchecked
|
||||||
|
{
|
||||||
|
int hash = 17;
|
||||||
|
hash = hash * 23 + Mathf.RoundToInt(obj.r * 255f);
|
||||||
|
hash = hash * 23 + Mathf.RoundToInt(obj.g * 255f);
|
||||||
|
hash = hash * 23 + Mathf.RoundToInt(obj.b * 255f);
|
||||||
|
hash = hash * 23 + Mathf.RoundToInt(obj.a * 255f);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Editor/SvgToFlatMeshEditor.cs.meta
Normal file
2
Assets/Editor/SvgToFlatMeshEditor.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9264c9156cb5dbc4cbfeaaa27c0ab93b
|
||||||
@@ -55,6 +55,10 @@ MonoBehaviour:
|
|||||||
- rid: 8712630790384254976
|
- rid: 8712630790384254976
|
||||||
- rid: 6455115202312536064
|
- rid: 6455115202312536064
|
||||||
- rid: 6455115202312536065
|
- rid: 6455115202312536065
|
||||||
|
- rid: 6596437875811942460
|
||||||
|
- rid: 6596437875811942461
|
||||||
|
- rid: 6596437875811942462
|
||||||
|
- rid: 6596437875811942463
|
||||||
m_RuntimeSettings:
|
m_RuntimeSettings:
|
||||||
m_List: []
|
m_List: []
|
||||||
m_AssetVersion: 8
|
m_AssetVersion: 8
|
||||||
@@ -97,6 +101,93 @@ MonoBehaviour:
|
|||||||
type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
data:
|
data:
|
||||||
m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2}
|
m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2}
|
||||||
|
- rid: 6596437875811942460
|
||||||
|
type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 6596437875811942461
|
||||||
|
type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
blueNoise16LTex:
|
||||||
|
- {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3}
|
||||||
|
- {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3}
|
||||||
|
- {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3}
|
||||||
|
- {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3}
|
||||||
|
- {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3}
|
||||||
|
- {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3}
|
||||||
|
filmGrainTex:
|
||||||
|
- {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3}
|
||||||
|
- {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1097e90e1306e26439701489f391a6c0, type: 3}
|
||||||
|
- {fileID: 2800000, guid: f0b67500f7fad3b4c9f2b13e8f41ba6e, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 9930fb4528622b34687b00bbe6883de7, type: 3}
|
||||||
|
- {fileID: 2800000, guid: bd9e8c758250ef449a4b4bfaad7a2133, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 510a2f57334933e4a8dbabe4c30204e4, type: 3}
|
||||||
|
- {fileID: 2800000, guid: b4db8180660810945bf8d55ab44352ad, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fd2fd78b392986e42a12df2177d3b89c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 5cdee82a77d13994f83b8fdabed7c301, type: 3}
|
||||||
|
smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3}
|
||||||
|
smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3}
|
||||||
|
m_TexturesResourcesVersion: 0
|
||||||
|
- rid: 6596437875811942462
|
||||||
|
type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_BlueNoise256Textures:
|
||||||
|
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
|
||||||
|
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 6596437875811942463
|
||||||
|
type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3}
|
||||||
|
subpixelMorphologicalAntialiasingPS: {fileID: 4800000, guid: 63eaba0ebfb82cc43bde059b4a8c65f6, type: 3}
|
||||||
|
gaussianDepthOfFieldPS: {fileID: 4800000, guid: 5e7134d6e63e0bc47a1dd2669cedb379, type: 3}
|
||||||
|
bokehDepthOfFieldPS: {fileID: 4800000, guid: 2aed67ad60045d54ba3a00c91e2d2631, type: 3}
|
||||||
|
cameraMotionBlurPS: {fileID: 4800000, guid: 1edcd131364091c46a17cbff0b1de97a, type: 3}
|
||||||
|
paniniProjectionPS: {fileID: 4800000, guid: a15b78cf8ca26ca4fb2090293153c62c, type: 3}
|
||||||
|
lutBuilderLdrPS: {fileID: 4800000, guid: 65df88701913c224d95fc554db28381a, type: 3}
|
||||||
|
lutBuilderHdrPS: {fileID: 4800000, guid: ec9fec698a3456d4fb18cf8bacb7a2bc, type: 3}
|
||||||
|
bloomPS: {fileID: 4800000, guid: 5f1864addb451f54bae8c86d230f736e, type: 3}
|
||||||
|
temporalAntialiasingPS: {fileID: 4800000, guid: 9c70c1a35ff15f340b38ea84842358bf, type: 3}
|
||||||
|
LensFlareDataDrivenPS: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3}
|
||||||
|
LensFlareScreenSpacePS: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3}
|
||||||
|
scalingSetupPS: {fileID: 4800000, guid: e8ee25143a34b8c4388709ea947055d1, type: 3}
|
||||||
|
easuPS: {fileID: 4800000, guid: 562b7ae4f629f144aa97780546fce7c6, type: 3}
|
||||||
|
uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3}
|
||||||
|
finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3}
|
||||||
|
m_ShaderResourcesVersion: 0
|
||||||
- rid: 6852985685364965376
|
- rid: 6852985685364965376
|
||||||
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
data:
|
data:
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.ai.navigation": "2.0.6",
|
"com.unity.ai.navigation": "2.0.9",
|
||||||
"com.unity.collab-proxy": "2.7.1",
|
"com.unity.collab-proxy": "2.9.3",
|
||||||
"com.unity.ide.rider": "3.0.31",
|
"com.unity.ide.rider": "3.0.38",
|
||||||
"com.unity.ide.visualstudio": "2.0.22",
|
"com.unity.ide.visualstudio": "2.0.23",
|
||||||
"com.unity.inputsystem": "1.13.1",
|
"com.unity.inputsystem": "1.14.2",
|
||||||
"com.unity.multiplayer.center": "1.0.0",
|
"com.unity.multiplayer.center": "1.0.0",
|
||||||
"com.unity.render-pipelines.universal": "17.0.4",
|
"com.unity.render-pipelines.universal": "17.0.4",
|
||||||
"com.unity.test-framework": "1.4.6",
|
"com.unity.test-framework": "1.6.0",
|
||||||
"com.unity.timeline": "1.8.7",
|
"com.unity.timeline": "1.8.9",
|
||||||
"com.unity.ugui": "2.0.0",
|
"com.unity.ugui": "2.0.0",
|
||||||
"com.unity.visualscripting": "1.9.5",
|
"com.unity.vectorgraphics": "2.0.0-preview.25",
|
||||||
|
"com.unity.visualscripting": "1.9.7",
|
||||||
"com.unity.modules.accessibility": "1.0.0",
|
"com.unity.modules.accessibility": "1.0.0",
|
||||||
"com.unity.modules.ai": "1.0.0",
|
"com.unity.modules.ai": "1.0.0",
|
||||||
"com.unity.modules.androidjni": "1.0.0",
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.2d.sprite": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"com.unity.ai.navigation": {
|
"com.unity.ai.navigation": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.9",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -10,7 +16,7 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.burst": {
|
"com.unity.burst": {
|
||||||
"version": "1.8.19",
|
"version": "1.8.25",
|
||||||
"depth": 2,
|
"depth": 2,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -20,20 +26,21 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.collab-proxy": {
|
"com.unity.collab-proxy": {
|
||||||
"version": "2.7.1",
|
"version": "2.9.3",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.collections": {
|
"com.unity.collections": {
|
||||||
"version": "2.5.1",
|
"version": "2.6.2",
|
||||||
"depth": 2,
|
"depth": 2,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.burst": "1.8.17",
|
"com.unity.burst": "1.8.23",
|
||||||
"com.unity.test-framework": "1.4.5",
|
"com.unity.mathematics": "1.3.2",
|
||||||
"com.unity.nuget.mono-cecil": "1.11.4",
|
"com.unity.test-framework": "1.4.6",
|
||||||
|
"com.unity.nuget.mono-cecil": "1.11.5",
|
||||||
"com.unity.test-framework.performance": "3.0.3"
|
"com.unity.test-framework.performance": "3.0.3"
|
||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
@@ -41,12 +48,11 @@
|
|||||||
"com.unity.ext.nunit": {
|
"com.unity.ext.nunit": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
"source": "registry",
|
"source": "builtin",
|
||||||
"dependencies": {},
|
"dependencies": {}
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
},
|
||||||
"com.unity.ide.rider": {
|
"com.unity.ide.rider": {
|
||||||
"version": "3.0.31",
|
"version": "3.0.38",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -55,7 +61,7 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.ide.visualstudio": {
|
"com.unity.ide.visualstudio": {
|
||||||
"version": "2.0.22",
|
"version": "2.0.23",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -64,7 +70,7 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.inputsystem": {
|
"com.unity.inputsystem": {
|
||||||
"version": "1.13.1",
|
"version": "1.14.2",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -88,7 +94,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.unity.nuget.mono-cecil": {
|
"com.unity.nuget.mono-cecil": {
|
||||||
"version": "1.11.4",
|
"version": "1.11.5",
|
||||||
"depth": 3,
|
"depth": 3,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
@@ -99,7 +105,7 @@
|
|||||||
"depth": 1,
|
"depth": 1,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.burst": "1.8.14",
|
"com.unity.burst": "1.8.20",
|
||||||
"com.unity.mathematics": "1.3.2",
|
"com.unity.mathematics": "1.3.2",
|
||||||
"com.unity.ugui": "2.0.0",
|
"com.unity.ugui": "2.0.0",
|
||||||
"com.unity.collections": "2.4.3",
|
"com.unity.collections": "2.4.3",
|
||||||
@@ -154,28 +160,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.unity.test-framework": {
|
"com.unity.test-framework": {
|
||||||
"version": "1.4.6",
|
"version": "1.6.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "builtin",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.ext.nunit": "2.0.3",
|
"com.unity.ext.nunit": "2.0.3",
|
||||||
"com.unity.modules.imgui": "1.0.0",
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
},
|
}
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
},
|
||||||
"com.unity.test-framework.performance": {
|
"com.unity.test-framework.performance": {
|
||||||
"version": "3.0.3",
|
"version": "3.2.0",
|
||||||
"depth": 3,
|
"depth": 3,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.test-framework": "1.1.31",
|
"com.unity.test-framework": "1.1.33",
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.timeline": {
|
"com.unity.timeline": {
|
||||||
"version": "1.8.7",
|
"version": "1.8.9",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -195,8 +200,27 @@
|
|||||||
"com.unity.modules.imgui": "1.0.0"
|
"com.unity.modules.imgui": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"com.unity.vectorgraphics": {
|
||||||
|
"version": "2.0.0-preview.25",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.2d.sprite": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.physics2d": "1.0.0",
|
||||||
|
"com.unity.modules.uielements": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestwww": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequesttexture": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.visualscripting": {
|
"com.unity.visualscripting": {
|
||||||
"version": "1.9.5",
|
"version": "1.9.7",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -12,11 +12,13 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
|
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_EnablePreviewPackages: 0
|
m_EnablePreReleasePackages: 1
|
||||||
m_EnablePackageDependencies: 0
|
|
||||||
m_AdvancedSettingsExpanded: 1
|
m_AdvancedSettingsExpanded: 1
|
||||||
m_ScopedRegistriesSettingsExpanded: 1
|
m_ScopedRegistriesSettingsExpanded: 1
|
||||||
oneTimeWarningShown: 0
|
m_SeeAllPackageVersions: 0
|
||||||
|
m_DismissPreviewPackagesInUse: 0
|
||||||
|
oneTimeWarningShown: 1
|
||||||
|
oneTimeDeprecatedPopUpShown: 0
|
||||||
m_Registries:
|
m_Registries:
|
||||||
- m_Id: main
|
- m_Id: main
|
||||||
m_Name:
|
m_Name:
|
||||||
@@ -24,20 +26,15 @@ MonoBehaviour:
|
|||||||
m_Scopes: []
|
m_Scopes: []
|
||||||
m_IsDefault: 1
|
m_IsDefault: 1
|
||||||
m_Capabilities: 7
|
m_Capabilities: 7
|
||||||
|
m_ConfigSource: 0
|
||||||
|
m_Compliance:
|
||||||
|
m_Status: 0
|
||||||
|
m_Violations: []
|
||||||
m_UserSelectedRegistryName:
|
m_UserSelectedRegistryName:
|
||||||
m_UserAddingNewScopedRegistry: 0
|
m_UserAddingNewScopedRegistry: 0
|
||||||
m_RegistryInfoDraft:
|
m_RegistryInfoDraft:
|
||||||
m_ErrorMessage:
|
|
||||||
m_Original:
|
|
||||||
m_Id:
|
|
||||||
m_Name:
|
|
||||||
m_Url:
|
|
||||||
m_Scopes: []
|
|
||||||
m_IsDefault: 0
|
|
||||||
m_Capabilities: 0
|
|
||||||
m_Modified: 0
|
m_Modified: 0
|
||||||
m_Name:
|
m_ErrorMessage:
|
||||||
m_Url:
|
m_UserModificationsInstanceId: -866
|
||||||
m_Scopes:
|
m_OriginalInstanceId: -868
|
||||||
-
|
m_LoadAssets: 0
|
||||||
m_SelectedScopeIndex: 0
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
m_EditorVersion: 6000.0.40f1
|
m_EditorVersion: 6000.0.60f1
|
||||||
m_EditorVersionWithRevision: 6000.0.40f1 (157d81624ddf)
|
m_EditorVersionWithRevision: 6000.0.60f1 (f02d6f9f9009)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
shaderVariantLimit: 128
|
shaderVariantLimit: 128
|
||||||
|
overrideShaderVariantLimit: 0
|
||||||
customInterpolatorErrorThreshold: 32
|
customInterpolatorErrorThreshold: 32
|
||||||
customInterpolatorWarningThreshold: 16
|
customInterpolatorWarningThreshold: 16
|
||||||
customHeatmapValues: {fileID: 0}
|
customHeatmapValues: {fileID: 0}
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3}
|
m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_LastMaterialVersion: 9
|
m_LastMaterialVersion: 10
|
||||||
|
|||||||
Reference in New Issue
Block a user