Отрисовка спрайтов в Wolf3D-подобном движке
Есть наброски псевдо-3d движка на голом си, карта-основа представляет собой двумерный массив из единиц и нулей. Единицы – стены, нули – свободное для "ходьбы" пространство. Так же есть двоечки, которые должны быть спрайтами.
В качестве алгоритма рейкастинга используется пошаговый на косинусах и синусах. Псевдокод (т.к. задаю вопрос с телефона):
Start = pov - 30°
End = start + fov
while (start <= end)
rayx = playerx
rayy = playery
while !wall
rayx += cos(start)
rayy += sin(start)
start += fov/screen_weight
вот этим циклом кастуются лучики, дальше отрисовываются (не суть важно как, метод один).
Вопрос: гайды от индусов на ютубчике и прочих ресурсах предлагают отрисовывать спрайты после отрисовки кадра-сцены, запоминая предварительно координаты спрайта на карте и запоминая (в дополнительный массив) длину каждого из брошеных ранее лучей, как например в этом гайде: https://proglib.io/p/raycasting-for-the-smallest . Есть ли возможность отрисовать и стены и спрайты за один проход лучей? То есть бросил луч, встретил спрайт, записал координаты, луч прошел дальше до стены. Отрисовал вертикальный столбец и сразу же отрисовал столбец спрайта ближе к игроку. Шаг луча дальше по FOV и так далее. Если есть, то как лучше это реализовать?
Если будет нужна дополнительная информация или код, то сообщите, докину в тред. Прошу извинить за псевдокод в вопросе.