Decided to check out how water is rendered in Counter-Strike 2
Given how interactive water in CS2 is, I expected to see some cell fluid simulation, but turns out they use just a low-res off-screen buffer with flat 2D decals for various water effects. Reminds me of HL2 water :)
Released my proof of concept BC1 encoder for channel packed textures on github!
I hope that bc7enc and icbc developers will consider paying more attention to channel packed textures in the future. 🙂
github.com/rmn20/dxt_cpt
Downloaded 763 1k ARM textures from polyhaven and tested b7enc and my encoder (with 4x4 principal axis) using SSIM, RMSE and LPIPS
I used L5 bc7enc mode as L18 is too slow and L5 seems to be closer to my encoder under the hood
So my encoder seems to score better only on LPIPS...
And if I use 6x6 principal axis, it loses even on LPIPS. I guess 6x6 PA degrades small detail too much.
Also, note that most textures have a completely black metallic channel, so results are slightly skewed.
If we assume that ALL textures had zeroed-out metallic channel, the results would look something like this:
SSIM:
BC7ENC: 0.93925
MY ENC: 0.93565
RMSE:
BC7ENC: 5.1213
MY ENC: 5.3502
LPIPS:
BC7ENC: 0.05145
MY ENC: 0.0456
Downloaded about 700 1K ARM/ORM textures from polyhaven to evaluate results of my BC1 encoder using SSIM, but it consistently gets lower scores than bc7enc, curious
Found another heuristic for improving visual quality of BC1 textures with channel packing.
The idea is to calculate principal axis using pixels of adjacent blocks. This blurs hue and can reduce detail of channels parallel to PA, but this also reduces artifacts on block boundaries
ALT Red, green and blue channels of bc7enc, experimental encoder with PA calculated using 4x4 blocks, and 6x6 blocks
Experimenting with S3TC/BC1/DXT1 compression. The idea is to intentionally leak channel data into each other to reduce blockiness and get at least some data instead of averaged out 4x4 blocks.
Came up with a cursed workaround for baking bent normals purely in Blender 3D using the raycast shader node. Bent normals are usually used for self-shadowing and reflection occlusion.
1. Regular normal map
2. Normal map raytraced shadows
3. Normal map bent normal map
#b3d
Ray-traced reference vs spherical harmonics (L0 L1) 1024x lightmap vs per-channel AHD (dominant direction) irradz 1024x lightmap
I can barely see any difference...
Pushing it to the limit… literally. Playing GTA 3 on a Nokia N95 connected to a TV with a Bluetooth controller. We enabled the light effects, particles, and more. It looks beautiful. Port by Shinovon, and I’m helping polish the Symbian S60v3 version
#rockstar#gta#nokia#n95
Currently trying various workarounds for baking directional lightmaps in #Blender 3D.
Ray-traced result vs 1024x1024 lightmap with directional information stored as spherical harmonics. #gamedev