Итак, у меня есть шейдер, который создает ландшафт из фрагментов, шейдер был создан с использованием графа шейдера, теперь мне нужно создать экземпляры некоторых объектов на ландшафте, моя общая идея заключалась в том, чтобы взять случайную вершину фрагмента, получить его глобальные координаты .
Затем я понял, что шейдер смещает вершины на графическом процессоре, но создание экземпляров выполняется на стороне процессора. Я подумал, что могу использовать обратное чтение графического процессора, но не совсем понял, как это использовать, действительно ли это возможно сделать с помощью графа шейдера?
Я также думал просто перенести логику смещения из шейдера в скрипт cs, но мне не удалось сделать ее мозаичной.
Итак, если идея каким-то образом читать данные с графического процессора кажется плохой, было бы здорово найти какие-нибудь решения по мозаичному смещению шума.
Вот что я попробовал для перемещения через файл cs. Каждый объект, к которому был прикреплен этот скрипт, имел одинаковое смещение, а не мозаику.
for (int i = 0; i < originalVertices.Length; i++)
{
Vector3 vertexWorldPos = transform.TransformPoint(transform.position) + originalVertices;
displacedVertices = vertexWorldPos;
displacedVertices.y = Mathf.PerlinNoise(vertexWorldPos.x * noiseScale, vertexWorldPos.z + noiseScale) * Height;
Debug.Log(displacedVertices);
}
mesh.vertices = displacedVertices;
mesh.RecalculateNormals(); // Recalculate normals to ensure lighting is correct
Подробнее здесь: https://stackoverflow.com/questions/782 ... ader-graph
Чтение положения вершин, смещенных шейдером (график шейдера) ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение