Real-time visualization of 3D medical data on low-performance mobile and virtual reality (VR, e.g. HTC Vive) devices is non-trivial because it is necessary to render image twice per frame for each of the eyes. The algorithm presented in this paper describes an approach that allows visualizing 3D medical data in real-time without loss of quality as well as demanding less computational resources. The proposed method is a two-pass rendering algorithm, whereby the approximate texture is rendered at the first step and optimized detailed ray casting applied to the whole scene at the second step. Since the algorithm requires no preprocessing and both passes are performed on each visualization frame, the algorithm allows to dynamically change the level of rendered isosurfaces; this is one of the chief advantages of the proposed approach. The versatility of the solution allowed its implementation for medical data visualization on various platforms, i.e. HTC Vive, Web Browsers, Android devices, and iOS devices.