Существует много литературы по обнаружению столкновений, и я прочитал, по крайней мере, достаточно большую ее часть, чтобы быть достаточно знакомым с большинством методов. Однако есть кое-что, что ускользнуло от меня на некоторое время, и я решил, что поскольку StackOverflow предоставляет доступ к большой группе блестящих умов одновременно, я бы сначала спросил здесь, прежде чем копаться в книжной полке.
В наше время все больше и больше работы делегируется на GPU, а не на CPU, и во многих случаях это хорошо. Например, существуют геометрические шейдеры для создания новой геометрии или (немного менее новые, но все еще довольно увлекательные) вершинные шейдеры, с которыми вы можете пройти через кучу вершин, и из этого получится что-то элегантное. Что я обдумывал, так как эти примитивы существуют только на графическом оборудовании, как бы вы выполнили надежное обнаружение столкновений с этими примитивами? Давайте предположим, что у меня есть какая-то чрезвычайно упрощенная сетка, которая смещена в вершинном шейдере (у меня нет конкретной проблемы, я больше играю с идеей, и я еще не очень углубился в геометрические шейдеры).
То, что я до сих пор рассматривал, - это отдельные проходы «рендеринга» с подходящих углов с более или менее отключенным затенением и, возможно, сеткой с более низким разрешением, рендеринг внутренней части (с перевернутыми гранями внутрь) моего второго примитива вместе с сеткой Я хочу проверить и выполнить запрос окклюзии для меша. Если сетка полностью закрыта, пересечения не будет. Это, конечно, потребовало бы, чтобы мой второй примитив был выпуклым.
Почему-то у меня возникает ощущение, что этот вид теста будет чрезвычайно дорогим, поскольку количество примитивов увеличивается (даже если большая часть может быть отбракована напрямую). У кого-нибудь еще есть другая идея или техника? Я больше знаком с opengl и cg, чем с directx, но если у вас есть несколько примеров в directx, думаю, я смогу выяснить аналоги opengl.
Все идеи приветствуются, поэтому, пожалуйста, проведите мозговой штурм. :)