Many early Windows games were developed with DX5, DX6, DX7 and DX8. Windows XP introduced DX9 which finally added strong support for the GPU.
DX3 was a developers nightmare so no serious games were developed with it. DX4 was not released and DX5 was the next release which was used by a few early Windows games.
DX7 is considerably different in operation compared to DX9. DX7 introduced hardware transform and lighting. The CPU was forced to do a lot of the work which is one of the reasons why MMX registers and SSE were added. DirectX 9 exposes features of DX7 level hardware that DirectX7 did not, targeting their fixed-function T&L pipeline.
Game engines generally will need to convert a lot of functions to D3D to be able to leverage the GPU instead of the CPU doing all the work.
Using a shader to handle the work done in code will definitely require some careful consideration. Ray casting can be done as a shader which is what Doom used back for its rendering engine.
DX9 introduces shader model 2.0. Extending a DX7 game does take a fair bit of work for developers to modernize. In practice many fine the process too daunting to even try as the fixed function T&L left the CPU to do most of the work, Still much of the CPU load can be dumped onto the GPU in a project.