I don't think occlusion will be a problem. You can just give the model a gigantic bounding box to prevent it from being occluded.
There are a few things that are very big obstacles, however. For the moment,
assume the only blend mode for materials is Opaque; I'll cover others later.
First, the renderer isn't designed to draw things in front of other things unless they're
actually in front. The very hardware on your GPU is designed around this.
But sometimes you don't want that, and you want the further-away-from-the-camera thing to draw in front of the closer-to-the-camera thing. There are various ways to do this, but the relevant one here is depth bias, because it's the only one available in Grimrock. Every material and particle emitter has a "depthBias" property. If you're interested in its exact meaning, look up "Z-buffering". The short explanation of depth bias is that it makes the renderer treat the material/particle as if it's closer or further from the camera than it actually is. On materials, negative depthBias makes the material closer, and positive depthBias makes the material further away. Depth bias will NOT change the actual location of the model in the 3D view; it will appear in the exact same location, size, and perspective on the screen. All it does is potentially make it render in front of, or behind, things that it otherwise wouldn't.
For particle emitters, the effect of the depthBias property is totally different! The signs are inverted, so a higher depthBias means closer, instead of further away. Furthermore, instead of merely changing the z buffer position, it actually changes the location of the particles in 3D space to be closer to the camera. I assume there is some implementation detail (outside of my area of expertise) that makes traditional depthBias impractical to add to particles.
depthBias gets you past that first obstacle, but there are two more problems that appear.
The first one is that you don't get to set depthBias dynamically, and you don't get to set it per mesh or anything fancy like that, just per material. So you might be defining more materials than you wanted. And while you can seamlessly swap out materials thanks to ModelComponent:setMaterialOverrides(), you can't swap out particle emitter definitions. (You can stop a ParticleComponent and start a new one on the same frame, of course, but the particles created by the old particle system are still stuck with the old emitter's depthBias and other properties).
The second one is only relevant for materials, but it has a lot of potential to be a problem there. The thing with depthBias is that it doesn't just make the model render in front of/behind other models it normally wouldn't; it'll also make the model render in front of/behind parts
of itself that it normally wouldn't. You'll find that this is a problem with a lot of models.
Now let's stop pretending that Opaque is the only blend mode. Everything I said about depthBias still applies to other blend modes; it works the exact same way there. Depth bias works for all blend modes. Maybe it doesn't work with all shaders (IIRC portal, water, and sky do some funny things), I haven't tested.
Obviously, the model rendering in front of parts of itself that it "shouldn't" is no longer a problem if you are using the Additive, Screen, Modulative, PremultipliedAlpha, or AdditiveSrcAlpha blend modes, since they are symmetric.
With that out of the way: blend modes other than Opaque offer an additional option for faking depth. ModelComponents and ParticleComponents have a "sortOffset" property that defaults to 0. When non-opaque blend modes cascade, they do so in order of sortOffset first, only using their actual depth if there is a tie. So if you have two ModelComponents with non-opaque blend modes, by default the closer one will render in front of the farther one (i.e. perform its pixel blends last), but if you give the farther one a
lower sortOffset value, the farther one will perform its pixel blends last instead, as though it were actually in front.
EXCEPTION: If two sort offsets are the same, and the two blend modes being used are Translucent and [anything other than Translucent or Opaque], instead of blending the closer one last like you would expect, the order of the blending appears to be essentially undefined - it changes with the camera angle. So try to avoid that situation. (It's possible that you could get around it with the "ForceZWrite" or "DisableDepthTest" render hack? I don't actually know what any of the render hacks do.)
If you go into the ORRR3 source and search mod_assets/rooms/minmay/objects.lua for "sortOffset", it offers some decent examples (I'm aware the file is a goddamn mess in general, but if you just search for "sortOffset" that won't matter
).
I think we've abandoned all pretense of "simple" at this point.