GPU трейсит лучик и находит потенциальное пересечение, потому что AABB объекта пересеклос с лучиком. Запускает его intersection shader, там идет маршировка и либо находится пересечение, либо нет. Все, дальше разницы между SDF и полигонами нет
Ну мы тогда немного возвращаемся к вчерашней теме. Динамическая загрузка шейдеров, и в особенности таких объемных, которые строят модель человека, например, штука не быстрая. И она будет вам разрушать опять же всю конфигурацию пайплайна каждый раз.
Вообще, объемный шейдер для конструирования сложной модели может занимать тысячи строк glsl кода, и он будет загружаться вместе со всем пайплайном секунды, если не десятки секунд.
Но более существенный вопрос тут даже не в оптимизации, а, повторюсь, в том, как этот самый шейдер пользователь будет конструировать. Это практически не так просто