This page provides information on the V-Ray Bitmap Texture, previously known as VRayHDRI.


Overview


The VRayBitmap map can be used to load high dynamic range images (HDRI) and map them onto the environment. V-Ray supports most of the standard HDRI-environment mapping methods. The VRayBitmap texture can also be used to load other file formats.

In the example shown, the VRayBitmap has been applied to the diffuse channel of a V-Ray material.

Since V-Ray 5.0 VRayHDRI texture has been renamed to VRayBitmap texture.


Max2023_VRay6_Textures.png


VRayBitmap_Hero_1200x900.jpg



Tiled OpenEXR and TIFF Files


This texture can also be used to efficiently load tiled OpenEXR and tiled TIFF files (tiled TIFF files usually have a .tx or .tex extension). Tiled OpenEXR and TIFF files allow only portions of the textures to be loaded at various resolutions. This allows V-Ray to load only the parts of the textures that are needed for the rendering.

You can convert many common image file formats to tiled OpenEXR files using the img2tiledexr tool. You can also convert all files in a scene using the V-Ray Bitmap to VRayBitmap converter script. Conversion to tiled TIFF can be done using the maketx tool from the OpenImageIO library.

Tiled TIFF files have the advantage that they can store 8-bit color components, whereas OpenEXR stores at least 16 bits. This means that tiled 8-bit TIFF textures are smaller on the disk and take up less RAM while rendering.


Tags and Environment Variables in Bitmap Names


VRayBitmap allows the use of named tags enclosed with the characters < and >, which are replaced at render time with other strings.

Note: Textures that have any of the render-time tags listed below, aren't resolved properly by the 3ds Max Asset Tracker (i.e. when creating .zip archives of the scene). However, they work correctly with the V-Ray automatic transfer of assets for distributed rendering.

Tags for Multi-Tiles

Some modeling applications allow you to specify a different bitmap file for different portions of a model based on the UV coordinates of that model. For example, one file may be used for UVs in the range [0,0] x (1,1), another file may be used for UVs in [1,0] x (2,1) and so on. There are several ways to specify the correct file for each tile, and in each case, a different format for the file name is used in the File node. This is done by using special tags in the file name, which are replaced at render time with a particular string based on the UVs of the current shading point.

In the following section, we assume that each UV tile has unique integer coordinates (u,v) based on the integer part of the UVs inside it. For example, the UV tile [0,0] x (1,1) has coordinates (0,0), the UV tile [1,0] x (2,1) has coordinates (1,0) and so on.

Upper-case tags usually assume the tile coordinates start from 1, whereas lower-case tags assume the tiles start from 0.

Mari Tiles and the <UDIM> Tag

Mari forms the file name of textures using a four-digit number equal to 1000+(u+1+v*10). So the UV tile [0,0] x (1,1) is assigned the number 1001, UV tile [0,1] x (1,2) is assigned 1011 and so on. To specify a Mari-style tiled texture, use the <UDIM> tag in the file name, which is then replaced with the respective four digits, for example, my_texture_<UDIM>.exr becomes my_texture_1001.exr and so on during rendering.

Mudbox Tiles and the <UVTILE> Tag

Mudbox can form the file name in many ways, but the default format is to use _uU_vV in the file name where U=u+1 and V=v+1 are the tile coordinates plus one. So the UV tile [0,0] x (1,1) is marked with _u1_v1, UV tile [0,1] x (1,2) is marked with _u1_v2 and so on. To specify this format, use the <UVTILE> tag in the file name. If you use lower case letters <uvtile>, then the tile coordinates will start from 0, instead of one, so tile [0,0] x (1,1) will be resolved to _u0_v0 and so on. For example, my_texture<UVTILE>.exr becomes my_texture_u1_v1.exr and so on during rendering.

The $U and $V Tags

You can also specify the u and v coordinates of the tiles separately by using the $U and $V tags. Each of them is expanded to the respective 1-based coordinate of the tile. For example, if the file name is specified as my_texture_$U_$V.exr, this becomes my_texture_1_1.exr and so on. You can use lower-case tags to make the tile coordinates start from zero, instead of 1, for example my_texture_$u_$v.exr becomes my_texture_0_0.exr and so on.

You can put a number right after the $ sign to specify how many digits you want in the resulting tile coordinates, for example my_texture_$2U_$2V.exr is expanded to my_texture_01_01.exr and so on.

The <frameNum> tag

The frameNum tag can be used to specify an image sequence. V-Ray loads a sequence from the same path. To use the frameNum tag, just add <frameNum> to your texture filename.

For example, if the first image in the sequence is located at C:\textures\myImage.0001.png, change the string to C:\textures\myImage.<frameNum>.png and V-Ray will look for an image that corresponds to each frame within the animation range.

Environment Variables

You can include environment variables in the form ${VAR_NAME} which are replaced with the value of the respective environment variable during rendering. For example, if the file name is specified as ${TEX_PATH}\${PROJ_FOLDER}\mytexture.exr, then V-Ray looks up the environment variables TEX_PATH and PROJ_FOLDER and replaces the tags with their values. Suppose that TEX_PATH is set to c:\textures and PROJ_FOLDER is set to proj1, then the final bitmap file name will be expanded as c:\textures\proj1\mytexture.exr

User-Defined Properties



Max2020_VRay5_VRayHDRI_ObjectProperties_window.png



You can specify node user properties between the < and > brackets. At render time, V-Ray takes the tag name and looks it up in the node's User Defined properties for the shaded object to determine the value of the tag. This allows a single VRayBitmap texture to use different files on different scene nodes. For example, you could specify the file name in VRayBitmap as c:\path\to\texture\<objtag>_diffuse.png and then for the objects that use the material, in their Object Properties dialogue, add a User-Defined property string with values like objtag=head or objtag=body, etc. Then during rendering, V-Ray will attempt to load and use the texture file c:\path\to\texture\head_diffuse.png for the first object and c:\path\to\texture\body_diffuse.png on the second.


Parameters


Bitmap – Specifies the file name from which the bitmap is loaded. Currently supported formats are HDR, EXR, PNG, BMP, TGA, SGI, JPG, PIC, TIF, PSD, VRIMG. Image file lists in the form of IFL files are also supported.

Browse – Click this button to browse for an image file.

Reload – Forces V-Ray to reload the texture from the hard drive.

View image – Shows a preview of the loaded map.

Locate – Opens the folder in which the texture file is located in a new Windows Explorer window.


Max2023_VRay6_VRayBitmap_Params.png


Mapping


These parameters determine how the VRayBitmap texture is mapped.

Mapping type – The following mapping types are supported:

Angular – Uses a map that looks as if taken with a fisheye lens, i.e. the projection assumes that the camera is in the center of a sphere. Тhese types of maps are efficient as most of the stored pixels are used except for those at the corners of the map. Note that there is significant distortion.
Cubic – Uses a 3x4 Cube map (Vertical cross). Cubic type is mostly used to create a seamless environment around the camera by being wrapped on a cube. The method captures a complete 360° of vision. Some areas of the bitmap are not included in the final projection, making the map less efficient as not all stored pixels are used.
Spherical – Uses a 2x1 stretched 2D bitmap representation of a sphere. Spherical type is mostly used to create a seamless environment around the camera by being wrapped on a sphere. The method captures a complete 360° of vision. The maps are very efficient because all the stored pixels are used.
Mirrored ball – Uses a 1x1 bitmap of a warped hemisphere. The method captures 180° horizontally and 180° vertically, not making it seamless.
3ds Max standard – The mapping type is determined by the Coordinates section.

Horiz. rotation – Allows left and right rotation of the environment map. Ignored when the Mapping type is 3ds Max standard.

Flip horizontally – Flips the environment horizontally. Ignored when the Mapping type is 3ds Max standard.

Vert. rotation – Allows up and down rotation of the environment map. Ignored when the Mapping type is 3ds Max standard.

Flip vertically – Flips the environment vertically. Ignored when the Mapping type is 3ds Max standard.

Mapping source – Provides control over the UV mapping of the VRayBitmap texture from another map. Use either another VRayBitmap map (see the Coordinates example) or any texture with Coordinates rollout (e.g. Checker) to feed all its Coordinates parameters values. Use VRayTriplanarTex and VRayUVWRandomizer maps to benefit from their enhanced mapping options.

Multiple VRayBitmap maps can use the same map as Mapping Source and this way simultaneously control their tiling, offset, rotation and other mapping features.

 Max2023_VRay6_VRayBitmap_InfoBoxExample.png

Click on the image to enlarge it.

Axial Rotation is accessible only through MaxScript from the command .axialRotation : angle.


Max2023_VRay6_VRayBitmap_Mapping.png


Ground Projection


These controls allow you to "flatten" the bottom part of an environment map onto a virtual plane. This is useful for rendering CG objects when you only have an environment map.

Note: The ground projection works for environment maps and for textures assigned to a Dome light.

On – Enables or disables the ground projection.

Position – The X, Y and Z coordinates of a point in 3D space where the center of the environment map is projected.

Radius – Specifies a projection radius. Can be used to control the scale of the projection.


Max2023_VRay6_VRayBitmap_GroundProjection.png





Example: Ground Projection


When Ground projection is disabled, though it almost looks like the teapot is sitting on the planks the perspective doesn't match. When Ground projection is enabled, the illusion that the teapot is sitting on the planks is more convincing as the perspective matches.


Ground Projection_Disabled

Ground Projection_Enabled



Processing


Overall multiplier – A control for the overall brightness of the image. This multiplier affects both rendering and the material editor.

Render multiplier – Controls the brightness of the loaded image only when rendering; it has no effect on the display of the image in the material editor.

Interpolation – Determines how the image is interpolated from the pixel values. See the Examples for a demonstration of this effect. Possible values are:

Bilinear – Image values are interpolated from four pixels in the bitmap. This is the fastest interpolation method, but the result is not continuous (non-smooth) and may produce artifacts when the map is used for displacement or bump mapping.
Bicubic – Image values are interpolated from sixteen pixels in the bitmap. This is the slowest method, but the results are smooth without too much blur.
Biquadratic – Image values are interpolated from nine pixels in the bitmap. This method is faster than the Bicubic interpolation, but may smooth the image too much. 
Default  – Interpolation type is chosen automatically depending on the bitmap format to match the behavior of the standard 3ds Max Bitmap texture. For HDR and EXR images, the interpolation is Bilinear, and for all other formats - Bicubic.

Filter mult. – Additional multiplier which controls filter blurring, especially useful with the mapping source feature. The higher the value, the more blurred the texture renders and the less render time it takes, and vice versa. A value of 0.01 means no filtering, but leads to increased render times. If a Bitmap is connected to the VRayBitmap as a mapping source, the Filter multiplier option serves as a multiplier for the Blur parameter of the Bitmap. For example, if the Bitmap Blur parameter is set to 10, and the VRayBitmap Filter multiplier is set to 0.1, the texture blur amount is effectively, 1. 

Filtering – Specifies the V-Ray internal texture filtering method. See the Filtering examples below. Possible values are:

Isotropic – Pyramidal MIP map filtering is used to compute the texture color. Can be blurry for textures seen at grazing angles. 
Elliptical – High quality anisotropic MIP map texture filtering that reduces blurring and aliasing artifacts. Can be slower compared to the Isotropic filtering. 
Sharp Isotropic – Sharper and more accurate version of the isotropic filtering. Produces results that are closer to the results with disabled filtering but with less AA samples required.


Max2023_VRay6_VRayBitmap_Processing.png





Example: The Interpolation Parameter


This example shows the effect of the different interpolation methods. The images below show a teapot displaced with this texture:





dots1.png
Displacement texture


dots1_large.png
Zoomed displacement texture with pixel boundaries shown




Notice how the different interpolation methods produce slightly different results with different smoothness.



hdri_interp_bilinear.png
Interpolation is Bilinear


hdri_interp_bicubic.png
Interpolation is Bicubic


hdri_interp_biquadratic.png
Interpolation is Biquadratic





Example: Filtering

This example compares the three types of Filtering with switched off Filtering (Filter Multiplier set to 0,01). The Filter mult. parameter is set to 1 (the default value) for the three Filtering options.


NoFiltering_Region.jpg

No Filtering

IsotropicFiltering_Region.jpg

Isotropic Filtering

EllipticalFiltering_Region.jpg

Elliptical Filtering

SharpIsotropicFiltering_Region.jpg

Sharp Isotropic Filtering



Crop/Place


The controls in this group let you crop the texture or reduce its size for custom placement. Cropping a texture means reducing it to a smaller rectangular area than it originally had. Cropping doesn't change the scale of the texture.

Placing a texture lets you scale the map and place it anywhere within its tile. Placing can change the texture's scale, but shows the entire texture. The four values that specify the placement and size of the cropping or placement region are all animatable. Cropping and placement settings affect the texture only as it's used for this map and any instances of the map. They have no effect on the texture file itself.

On – Turn on to use the cropping or placement settings.

Crop – Enables cropping.

Place – Enables placing.

Preview – Opens a preview window with a red rectangle for the crop/placement.

U/V – Adjusts the texture location - specifies the location of the top left corner of the image.

Width/Height – Adjusts the width and height of the texture or crop area.


Max2023_VRay6_VRayBitmap_Crop.png


RGB and Alpha Source


These controls allow the user to specify how the color and alpha of the resulting texture are derived.

RGB output – Specifies the source for the color of the texture:

RGB color – The normal texture color;
Alpha as gray – The color of the texture is the alpha channel converted to a grayscale color;
Intensity as gray – The texture converted to grayscale colors based on the intensity of the colors (red+green+blue)/3

Alpha source – Determines how the texture alpha is computed:

Image alpha – From the alpha channel of the bitmap image, if present (and 1.0 if the image has no alpha channel);
Intensity – The alpha is taken from the intensity of the bitmap image colors (red+green+blue)/3;
None (opaque) – The alpha channel of the bitmap image is ignored and the VRayBitmap texture always returns 1.0 for alpha.

Mono output – Determines the value of the texture when used as a floating-point texture (e.g. for glossiness values in materials, amount values, opacity values, etc.):

RGB intensity – The mono output is taken from the bitmap color intensity (red+green+blue)/3;
Alpha – The mono output is taken from the bitmap alpha.


Max2023_VRay6_VRayBitmap_RGBColor.png


Color space transfer function


Type – Specifies the transfer function for the loaded image file.

None – No correction is applied;
Inverse gamma – The transfer function is controlled through the Inverse Gamma parameter.
sRGB  – The loaded image is considered in sRGB transfer function;
From 3ds Max – The gamma is controlled from 3ds Max gamma settings (Customize -> Preferences -> Gamma and LUT).
Auto – Automatically determines the color transfer function. If a bitmap file name contains the string "_srgb" the transfer function is sRGB. If a bitmap file name contains the strings "_lin_srgb" or "raw", no correction is applied. For bitmap files with 8 bits per color component, 3 or 4 color components (like png, jpg, and other) and no suffix, the transfer function is sRGB. In all other cases, no correction is applied.

Inverse gamma – A gamma–correction value for the image. For example, if the bitmap was saved to disk with a 2.2 gamma correction, you need to enter 0.4545 to remove that correction for the rendering.


Max2023_VRay6_VRayBitmap_Color.png


Viewport


Use full resolution for viewport – When enabled, ignores the requested viewport resolution and uses the bitmap resolution instead. This allows high-quality previews for specific maps regardless of the Max viewport settings. Note that 3ds Max does not support resolutions larger than 16384x16384.


Max2023_VRay6_VRayBitmap_Viewport.png


UDIM/UVTILE preview in material editor


These options allow you to specify which UV tile will be used to texture the material in the material preview when either UDIM or UVTILE texturing is used.


Max2023_VRay6_VRayBitmap_UDIM.png


Time


These options allow you to control animated textures. Currently it works only with IFL sequences.

Start Frame – Specifies the beginning of the texture animation. The frame number specified here will be played at the first frame of the scene animation.

Playback Rate – Controls the animation speed of the texture as fraction of the actual animation speed. A value of 1 means that the texture animation will run at regular speed. A value of 2 means that the texture animation will run twice as fast as the scene animation.

End Condition – Allows you to control what happens when the last frame of the animated texture is reached. The available options are:

Loop – The animation will start again from the frame specified in the Start Frame option;
Ping-pong – The animation will be played backwards until it reaches the frame specified in the Start Frame option and then play forward again;
Hold – The animation will stop at the last frame and it will be displayed until the end of the scene animation.


Max2023_VRay6_VRayBitmap_Time.png


RGB color space


RGB primaries – Allows you to manually override the RGB primaries of the VRayBitmap.

Default When Auto RGB primaries for VRayBitmap textures option in Render Setup > Color Management tab is enabled, the color space is deduced by the file's name. When it is disabled, no transformation is applied to R|G|B colors;
sRGB primaries – The loaded image is considered in sRGB color space;

ACEScg primaries – The loaded image is considered in ACEScg color space;
Raw – No transformation is applied to R|G|B colors. This option is suitable for normal maps.


Max2023_VRay6_VRayBitmap_RGBColor.png


Coordinates


The Coordinates parameters are used when the Mapping type is set to  3ds Max standard. They are the regular 3ds Max mapping parameters as found in the standard 3ds Max Bitmap texture. 

The Coordinates rollout parameters of the VRayBitmap can be overridden by another map if it is connected as a Mapping source.

In this example, VRayBitmap #3 overrides the Coordinates rollout parameters of the other two VRayBitmap maps as it serves them as a Mapping source.


Max2023_VRay6_VRayBitmap_exampleBitmaps.gif


In Map #1 the Tiling is set to 5.5 and in Map #2 the Tiling is set to 2.2. VRayBitmap Map #3 overrides the Coordinates parameters of both VRayBitmap maps. It sets their Tiling to 3.3 and W rotation to 45 degrees as in its Coordinates rollout.



Max2023_VRay6_VRayBitmap_Coordinates.png


Bitmap to VRayBitmap converter


V-Ray includes a MaxScript tool for converting standard 3ds Max Bitmap textures to VRayBitmap textures, with the option to automatically convert the texture files to tiled OpenEXR files. The tool can be invoked by right-clicking in any viewport and selecting V-Ray Bitmap to VRayBitmap converter. For more details, please see the V-Ray Bitmap to VRayBitmap Converter Tool page.


Max2023_VRay6_VRayBitmap_Convertor.png


Notes


  • VRayBitmap loads the texture the first time it is needed during the actual rendering, rather than at the start of a frame. Textures that are not needed (for example, because their materials are not needed for the particular camera angle) aren't loaded at all.

  • When using tiled OpenEXR or TIFF textures, it is recommended to turn on the Filter maps for GI option in the Global Switches section; otherwise V-Ray will be forced to almost always load the most detailed version of the texture.