I don’t like the texture flexibility in Roblox.
Trying and comparing it to unity we still dont have adjustable or a controllable render pipeline.
(Not only for FPS uses) could be used for simulating water, inside of vehicles, mask overlays, etc.
This video uses surfaceGUIs and textures. And as you can see it is still buggy even if the weapon doesn’t “clip” with the real world models.
This is a much better alternative toward ViewportFrames which is kind of being left in the dark, and the lighting with these textures are still way more accurate with shadow-casted from real world objects and lighting that reflects and shines on your weapon.
real world object transparency = 0.7 to cast shadows (same with baseplate)
all weapon parts transparency = 0.011
surfaceguis ZOffset = -250
baseplate surfacegui ZOffset = -350 (should be lowered than all the other surfaceguis)
edit: ultimately the difference between this and ViewportFrame is that, in the viewport you can adjust the viewmodel FOV (a second camera is inserted)
and this system, the FOV is tied to the regular camera.
viewmodel doesn’t intersect the grass, even when the grass is colliding with NearPlaneZ: