Just to correct this misleading quote, lekxi was me Discourse just didn’t let me change the name.
As i said there is simply no way to protect assets except serving a watermark as preview, code doesn’t even has to be reverse engineered, just grabbing the bare buffers, with textures being exposed in devtools anyway. The only semi-reliable method is branding it with a hidden watermark as i described, but this is only usefull for selling/previewing assets, not for games.
The best watermark/fingerprint for the geometry would be slightly displacing vertices or just a single, different from the original mesh that will be sold, this way there is no obvious garbage in the geometry with it being unknow to the thief what will be different from the original.
Otherwise as long as you’re not working on a platform like Sketchfab this shouldn’t be a subject to spent too much time and resources into. I’m using a proprietary format, which is clearly enough to prevent the absolute majority from theft, unlike if you were using a common format such as GLTF or FBX.
If you do work on a platform like Sketchfab, i would do the watermark approach plus changing the code, possibly in intervals of the encoding and decoding in order to prevent people creating tools they sell for mass theft, as it happens with Sketchfab with asset grabber even being shared on github. But for something like this i would go an entire differently route anyway that doesn’t even transfer the assets to the client.
To address the topic title: you could obfuscate the buffers to prevent straight grabbing them, but this is over the top for games, but useful for asset previews. Geometry can be encoded with displacements the vertex shader can place in the correct position again, for textures this is more complicated as you will have to do the linear interpolation yourself making sure every sample is decoded, or for displaced texels the right texel being sampled from.