TGViewer
Лаборатория Лиса Лаборатория Лиса @foxfoxcsharp · 79 subscribers
Post #9 90
Код из последнего эксперимента:
public struct AdvancedMeshJob : IJob 
{
[NativeDisableUnsafePtrRestriction]
public IntPtr meshDataPtr;
public float deltaTime;

public void Execute()
{
var cache = (MeshDataCache)GCHandle.FromIntPtr(meshDataPtr).Target;

for (int i = 0; i < cache.vertices.Length; i++)
{
// Считаем расстояние от центра для каждой вершины
float distanceFromCenter = Mathf.Sqrt(
cache.vertices[i].x * cache.vertices[i].x +
cache.vertices[i].z * cache.vertices[i].z
);

// Создаём повторяющуюся волну на основе расстояния
float repeatingDistance = (distanceFromCenter + deltaTime) % 1.0f;

// Применяем кривую к Y-координате
cache.vertices[i].y = cache.curveY.Evaluate(repeatingDistance) * 4f;
}
}
}
public class MeshDataCache
{
public Vector3[] vertices;
public AnimationCurve curveY;
}
public class TestMeshInJobs : MonoBehaviour
{
[SerializeField] private AnimationCurve curveX;
[SerializeField] private AnimationCurve curveY;

private Mesh targetMesh;
private MeshDataCache meshCache;
private GCHandle meshHandle;
private IntPtr meshPtr;

private AdvancedMeshJob job;

private JobHandle jobHandle;

void Start()
{
targetMesh = GetComponent<MeshFilter>().mesh;

meshCache = new MeshDataCache
{
vertices = targetMesh.vertices,
};

meshHandle = GCHandle.Alloc(meshCache, GCHandleType.Pinned);
meshPtr = (IntPtr)meshHandle;

job = new AdvancedMeshJob
{
meshDataPtr = meshPtr,
deltaTime = Time.time // Используем time вместо deltaTime для волны
};

StartCoroutine(CorrutineTest());

}
public IEnumerator CorrutineTest()
{
while(true)
{
job.deltaTime = Time.time;
jobHandle = job.Schedule();
yield return new WaitForSeconds(0.05f);
jobHandle.Complete();
targetMesh.SetVertices(meshCache.vertices);
}
}
void OnDestroy()
{
if (!jobHandle.IsCompleted)
{
jobHandle.Complete();
}
if (meshHandle.IsAllocated)
meshHandle.Free();
}
}

#ЛисыПишутКод #CSharp #Unity #GameDev #Optimization
#UnsafeCode #UnityJobs #BurstCompiler #Programming
#MultiThreading
More from @foxfoxcsharp
  1. Oct 7, 2026Вот более щедящий режим, тут хотя бы уже видно на каком моменте уже моделька начинает... Я…
  2. Oct 7, 2026Я тут накатил еще моделей, самая большая которая мне понравилась по уму и качеству и по ск…
  3. Oct 7, 2026Последние результаты ГЕНЕРАЦИЯ, ток/с модель 2k 8k 16k 32k 64k 128k ----------------------…
  4. Oct 6, 2026Ну в общем === qwen3.8:27b === загрузка: 116.0 с, 52% на GPU запуск 1: генерация 3.4 ток/с…
  5. Oct 6, 2026Продолжаю эксперементировать с гнейронками, накатил относительно свежие модельки (До этого…
  6. Oct 6, 2026Может быть мне человек это сказал для успокоения, но тем не менее, он высказал свое мнение…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →