For 3d, to take Blender as an example, a zero-level diff feature would be to export (e.g. as glTF) and show which scene objects differ (meshes, textures, lights, etc.) More detailed parsing would give more details, e.g. image-diffing modified textures.
As I noted, merging is nontrivial. But it seems important -- if I save a branch, go back to the trunk and do more work, how do I add in the changes I made on the branch? Or even know what those changes were? Good diffs would help of course.
Merging would certainly have to be product-specific. For some open-source tools one could imagine hooking into their undo/redo logic, or parsing the product files into a temporary line-based format, but from outside it seems much more challenging than line-based merge in git (which is already imperfect for many applications).
Also, I guess that the need is not really there, because otherwise, Adobe or some other company would have implemented this in the past 30 years.
About merge operations: The majority of solo artists and designers don't work in many branches. Most projects just go forward and branches are only useful if a rollback is needed. That being said, Snowtrack does offer a simplified "cherry-pick". But merge operations as you might know them from Git/Perforce are not implemented yet as it takes time to see how users adapt the software.
Keep in mind, most artists and designers are new to VCS or have never heard of it before and therefore it is crucial to find the right balance between too little and too many features. Any second that keeps the artist away from creating their artwork is wasted and therefore and the goal is to not interfere with their workflow or to add additional "management tasks"