This video will show you how to use the Volume Texture ROP to write out a texture that can be used with Ryan Brucks' volume plugin in UE4.

Check out Epic's live stream of the plugin in action - Realtime Simulation and Volume Modelling Plugin | Live Training | Unreal Engine

You can download the plugin from the Epic Forum (needs an Epic account).

And remember you can grab our latest gamedev tools on GitHub.


  • Davood Kharmanzar 6 years, 7 months ago  | 

    hi Mike,

    is it possible to make these textures for an animated object? more info. please :]

  • simonschreibt 6 years, 7 months ago  | 

    Wow, that's really cool :) <3

  • mikelyndon-sesi 6 years, 7 months ago  | 

    Hey Davood. You could but if the intention is to use it for realtime it wouldn't be very performant because you'd need a texture per frame. Also, you'd have to setup the shader to read the textures in sequence which could be very slow.


    • Davood Kharmanzar 6 years, 7 months ago  | 

      OK ... but how? can you post screenshots or tutorial or something? thanks.

  • mikelyndon-sesi 6 years, 7 months ago  | 

    That's beyond the scope or intention of this tool. You would have to figure that out for yourself.

    • Davood Kharmanzar 6 years, 7 months ago  | 

      i mean in houdini :]
      i'm newbie in houdini ....
      how i can make sequences of this textures??

  • furkanxdgs4 6 years, 6 months ago  | 

    Hello, I wanna ask a question. The Distance VDB in the VDB from Polygons, Is it Signed Disned Field Volume? I want to understand differences between SDF and Ray Marching. According my reads, SDF is a 3D map but It's only saving how much pixel it can see/texture see. But Ray Marching's saving all of the surface of Mesh to a 3D Texture. But which one is the best for using in a Urban City on Buildings? I read something about Battlefield 2 used SDF for Build Destruction but I'm not sure that it is used for rendering mesh, I think it is used for Masking Destruction. I want to do something like "Everything is on the GPU, CPU Sleeps" thing, because I will create huge world with AI characters, very much like GTA (Grand Theft Auto). Can you help me?

  • mikelyndon-sesi 6 years, 6 months ago  | 

    This question isn't relevant to the tutorial. Please post your question in the forums. You might have better luck in getting a response there.

  • madguru 6 years, 6 months ago  | 


    this is exactly what I want to do, however, when I look at my shader, I don't have a VolumeSlices texture slot. I made an instance of the same M_VolumeRayMarch_Lit_LinearSteps shader, but don't see that slot. I checked the other shaders and did not see it in any of them either. Any ideas?

  • mikelyndon-sesi 6 years, 6 months ago  | 

    I think by default the shader has a hardcoded texture object. If you open the parent material replace the texture object with a TextureObjectParameter so you can expose the texture you want to use.

  • madguru 6 years, 6 months ago  | 

    Thanks, that was just what I needed!

  • Vasilis Triantafyllou 6 years, 5 months ago  | 

    Hello i just installed the latest as of today 16.0.705 version of Houdini on MacOS and downloaded and installed the latest build of the gamedev tools from github.
    I believe i setup everything correctly but when hiting the render button on the rop_volume_texture interface nothing happens. Is there any common gotcha with this tool we should be aware of? Thanks

  • mikelyndon-sesi 6 years, 5 months ago  | 

    2 things to try. If you toggle on the preview does it show you what the texture will look like? If not, there might be an issue with your volume.
    Otherwise the tool writes a volume to the $TEMP directory. If there are permission issues that might not work causing the texture to be blank.

  • Vasilis Triantafyllou 6 years, 5 months ago  | 

    Thanks for the Reply :)
    When i toggle the preview it shows the texture as expected as shown here :
    I have created the render directory manually so that it does not complain, but still when pressing render nothing happens.

  • mikelyndon-sesi 6 years, 5 months ago  | 

    Ah, I think I know what the problem is. Can you check that the geometry container doesn't have a procedural shader applied in the render > geometry tab. If that's clear then try object merging the cloud result into a new geometry container or use a stash node. The cloud nodes can sometimes cause problems with the volume texture node.

  • Vasilis Triantafyllou 6 years, 5 months ago  | 

    Thanks for looking into it!
    No procedural shader applied and Object merged to a new geometry container -> no change
    I also created a vdb from polygons fog volume and deleted the cloud and cloudnoise nodes but still no render possible. Object merged this to another geometry container, and applied the rop volume texture node but still no render possible. In all the above cases the preview works fine. I greatly appreciate your will to help, many thanks.

  • mikelyndon-sesi 6 years, 5 months ago  | 

    Are you using apprentice? That's the only other think I can think of that might cause an issue.

    • Morteza Ahmadi 6 years, 5 months ago  | 

      i'm using Houdini apprentice and i can't render the texture . sometimes it render and write a file but other times nothing happens and no file got written.
      is there any solution to this problem?

      • mikelyndon-sesi 6 years, 5 months ago  | 

        Unfortunately the tool doesn't work with apprentice because it needs to write out a volume before it can generate the texture. Apprentice doesn't allow the user to write out files except for obj.

  • Vasilis Triantafyllou 6 years, 5 months ago  | 

    I am using it with Houdini FX. I just found out that when i press the button to add a camera from the lights and cameras shelf but not complete the process by hitting enter to add a camera in the viewport a window named interrupt comes up that seems to be performing a render but nothing happens, it never completes the rendering.
    when i add the camera to the scene by hiting enter it never shows the window in the link above ie it behaves as in the previous cases without doing anything.

  • Vasilis Triantafyllou 6 years, 5 months ago  | 

    and houdini crashes...

  • Vasilis Triantafyllou 6 years, 5 months ago  | 

    it ok i will go with the mosaic node instead.

  • madguru 6 years, 4 months ago  | 


    I wondered if there is a way to bake out the color of the volume as well.


  • StanV 6 years, 1 month ago  | 


    I'm having a strange issue when using the rop_volume_texture - every time I try to render out, no textures get exported. Digging deeper inside the ropnet, the bake texture node comes up with an error:

    Command Exit Code: 3

    No licenses could be found to run this application.
    Please check for a valid license server host

    I'm on a commercial license of Houdini FX 16.5 and I've tried grabbing the latest game dev tools, still no luck. None of the other ROPs have come up with this error before, maybe I'm doing something wrong in the setup?

    Thanks in advance!

  • mikelyndon-sesi 6 years, 1 month ago  | 

    That does seem strange. How many render licenses do you have? Is it possible you're trying to run this node while there's another rendering going on in the background?

    • StanV 6 years, 1 month ago  | 

      Fixed now, the render license was the culprit. Thank you for the fast reply and all the great tools!

  • LucidMovement 6 years ago  | 

    Hi Mike,

    Thanks for the great tool and tutorial. Any thoughts on how to add color output?

  • mikelyndon-sesi 6 years ago  | 

    Right now the tool samples a single field. If you wanted to handle colour you'd need 3 fields for each channel. And then in the shader you'd need to sample each field to write out the colour.

    • LucidMovement 6 years ago  | 

      That did the trick. Thanks! :)

      • The_Distiller 2 years, 3 months ago  | 

        Hey! @LucidMovement:

        I'm also trying to add color output. Can you share your ROP or give a more detailed breakdown of how you did it? Thanks!

  • JohnDraisey 5 years, 4 months ago  | 

    Sweet jesus, this is a sick tool.

  • HuDaatre 5 years, 3 months ago  | 

    I need help, 64 tiles with 8 tiles per line is working fine
    but 256 tiles with 16 tiles per line is not exporting the right resolution :( can anybody confirm this??

    <blockquote class="imgur-embed-pub" lang="en" data-id="a/WiB8IOv"><a href="//"></a></blockquote><script async src="//" charset="utf-8"></script>

    but I need 256 tiles ...


    • HuDaatre 5 years, 3 months ago  | 

      EXR wrong resolution export with 256 tiles and 16 tiles per line: (4096 x 3840)

      • HuDaatre 5 years, 3 months ago  | 

        144 tiles / 12 per line with 512x512 outputs 516x516 :(

        • HuDaatre 5 years, 3 months ago  | 

          Possible workaround for dropped images in the sequence causing wrong resolution export:

          rop_volume_texture -> cop2net -> mosaic -> check 'Keep Full Size'

    • Ambrosiussen 5 years, 3 months ago  | 


      I just submitted a fix for your 256/16 problem. It was indeed just a matter of ticking the Keep Full Size checkbox. This will be part of toolset release 1.79, which will be live November 16th.

      As for your 144/12/512 example, that will not work. If you have 512 pixels in the image (width), and divide that by 12 images you effectively get 42.66 pixels per image. Hence the odd number in the output image.


  • dividuum 4 years, 11 months ago  | 

    is it possible for the tool to render non-square images to a the texture (as multiple 128x64 slices)? I have a volume that has a scale of 63x31.5x3.9375 (same relation as 64x32x4). Seems like the tool just takes the object's longest side.

  • stretched 3 years, 5 months ago  | 

    [SM5] Shader attempted to bind the Primitive uniform buffer even though Vertex Factory FLocalVertexFactory computes a PrimitiveId per-instance. This will break auto-instancing. Shaders should use GetPrimitiveData(Parameters.PrimitiveId).Member instead of Primitive.Member.

  • The_Distiller 3 years, 3 months ago  | 

    When rendering a sequence, the position of the volume shifts slightly for each render. Resulting in an unstable (jittering) volume in UE4. Can this be fixed? Thx!

    • stretched 2 years, 6 months ago  | 

      hey let me know if you already fix that issue , i got the same problem.

      • The_Distiller 2 years, 3 months ago  | 

        Hey! Yeah I managed to find a fix. You have to dive into the ROP and replace the volume bound node with a cube that has a fixed size.

Please log in to leave a comment.