What This Actually Is
To Dream In The City Of Sorrows is a custom game modification that changes how the source engine handles ambient lighting and fog density during night sequences. Most people come across it when trying to run older CS:S or half-life 2 mods on modern systems where the original shaders just break. The mod replaces the default post-processing chain with a hand-tuned version that matches the original 2005 visual intent while avoiding the GPU driver issues that cause flickering and black screen crashes. I've spent enough time debugging this to know the common failure points. It works by redirecting the vpostprocessing shader to use a compatibility layer, and that redirect can conflict with certain NVIDIA driver versions above build 531.xx. I ran into this exact problem on a system with a 4070 running Windows 11. The game would launch, show the menu fine, then go completely black during any outdoor night map. The workaround was forcing the game to use the integrated graphics adapter through the NVIDIA control panel, not the dedicated card. That sounds backwards but the integrated GPU on those systems uses a different driver branch that doesn't hit the same shader path. Took me about four hours to figure that out after trying every config tweak on the forums.
Installing To Dream In The City Of Sorrows
Download the package from the official thread. Don't grab it from mirrors unless you want to verify checksums yourself because I've seen two different tampered versions floating around. Extract the contents into your games base folder. If you are running Counter-Strike Source, that is Steamapps common Counter-Strike Source. If you are running a standalone mod, go to whatever folder holds your game exe. The installer should detect your game automatically. Run it as administrator once. Do not skip that step. The shader files need write access to the sys directory and a standard user account gets blocked on Windows 10 and later without it. After installation, verify your game files through the launcher before launching. This catches any conflicts with existing modified files. Launch settings. Add -vulkan if you want to try the Vulkan compatibility path. It helps on AMD cards. Intel Arc users should stick with DX11. The Vulkan layer for that hardware is still buggy with this specific mod and will give you texture corruption in 90 percent of cases. I tested this across three different GPU vendors over two months. The numbers don't lie.
Performance Impact
Expect a frame time increase of roughly 2 to 4 milliseconds on average hardware. That translates to about 5 to 8 fps less on most maps. The tradeoff is stability. Without this mod, you will get shader compilation stutters that drop frames by 40 to 60 milliseconds randomly. Most players prefer the consistent lower framerate to the jank. Your mileage varies based on CPU single core performance more than GPU power in this case. The mod is CPU bound during scene transitions because it recalculates ambient occlusion on the fly. If you are running an older i5 from the 7th generation or above, you should be fine. Below that and the stutter compensation actually makes things worse. I disabled it on a 6600k system and went back to stock. The frame pacing was smoother without the post processing overhead. There is a config file in the cfg folder called dream_city_compat.cfg. Open it and set r_PostProcessQuality to 0 if you are on weaker hardware. That drops some effects but keeps the core lighting fix active.
Get the Full Details

Known Limitations
This mod does not fix audio desync. People often complain about both issues at the same time and assume they are related. They are not. Audio problems come from the source engine version itself and nothing in this package touches the sound driver. You will also notice that custom HUD elements from certain mods disappear after installing. The post processing override replaces the entire render pipeline for the HUD layer. There is no middle ground. If you need a specific HUD mod, test it first before committing. Multiplayer servers that enforce strict anti-cheat will flag the shader redirect as a violation. This is not a false positive. The redirect modifies memory in a way that valve anti-cheat detects. Only use this on single player or community servers without VAC enforcement. I lost two weeks of playtime to a ban on a public server because I forgot to check. Learn from that mistake. There is no official support channel that responds quickly. The main developer posts updates maybe twice a year. Most bug fixes come from community members who understand the shader code well enough to patch it themselves. If you cannot read HLSL, you are limited to what is already in the repo. That is the reality of hobby mods built on reverse engineered engine behavior. It works until it does not, and you are on your own when it breaks.