Add a “Unwrap UVW” modifier on the object and set its map channel to 2, and it should work. Not sure yet why this is needed, I’ll continue investigating.
EDIT: I can’t seem to reproduce it on a new object. I reckon it’s your object’s UVs are messed up. Adding the UVW channel, setting it to map channel 2, and converting the object back to edit poly seems to resolve the issue.
Three bugs are documented, all sharing the same root cause in BerconSC.h.
[/HR] Bug 1 — Blurry tiles in VRay Standalone (CPU)
BerconSC::UVW() returns tile-local UV correctly, but DUVW() is never overridden — it delegates unchanged to the original render context. The MIP sampler receives derivatives tile_width / tile_size times too large → too-coarse MIP level → blur.
The per-tile UV flip (U_new = 1 - U_old) is applied to the coordinate but BumpBasisVectors() and DPdUVW() are never updated. The tangent-space X axis points the wrong way on flipped tiles → shading inconsistency across tile boundaries when BerconTile is used in a normal map slot.
Workaround: disable flip_X / flip_Y on the BerconTile node when used for normal maps.
Fix for Chaos: negate the tangent X component in BumpBasisVectors() when a U-flip was applied (Option B), or add a normal_map_mode parameter to skip flips entirely (Option A).
[/HR] Bug #3 — No texture on GPU (CUDA / RTX)
Tested on VRay Standalone 7 with RTX 3070. Both rtEngine=5 and rtEngine=7 produce a grey surface with explicit warnings:
Bercon tile UV mapping is unsupported
Bercon tile randomization is unsupported
Render proof in the repo (proof/ folder).
[/HR] Common root cause across all three bugs:
BerconSC (the ShadeContext wrapper in BerconSC.h, Apache 2.0: GitHub - Bercon/BerconMaps: BerconMaps is a 3rd party texture plugin for Autodesk 3ds Max · GitHub) overrides UVW() for tile-local coordinates but never updates the associated vector quantities:
Point3 DUVW(int channel) { return sc->DUVW(channel); } // Bug 1
void DPdUVW(Point3 dP[3], int channel) { sc->DPdUVW(dP, channel); } // Bug 2
int BumpBasisVectors(…) { return sc->BumpBasisVectors(…); } // Bug 2
A single consistent review of BerconSC.h would address all three. The tile geometry algorithm in src/tile.cpp is pure math with no 3ds Max dependencies — GPU-portable as a CUDA kernel.
Happy to answer questions or provide additional test data.
The Bercon maps’ code on GitHub is for 3ds Max, not Standalone (not public). And from what I understood, you’re using Standalone, correct? Otherwise, bravo for finding a workaround. Also, I’ve forwarded the info to our devs to have a look.
EDIT: I did some additional testing on your scene and found out that the UVs created by the “Real-World Map Size” option in the Box primitive are the culprit. If I disable it and add a UVW Map modifier (channel 2 so as to trigger Bercon’s UV Fit), I get identical results between STD and 3ds Max.
You can reproduce it within 3ds Max, too - by adding a UVW Map and enabling its own “Real-World Map Size”. This also answers why the initial workaround (with the UVW Unwrap) did the trick.
Just to clarify — the blur issue I described isn’t related to Real-World Map Size or UV setup. The test scene uses a standard UVW Map modifier with consistent settings, and the same scene renders correctly in 3ds Max with an identical material setup.
The root cause appears to be inside BerconTile itself: DUVW() is never overridden in the render context wrapper, so MIP-map sampling receives incorrect derivatives when BerconTile tiles the UV space. This produces the blur regardless of how the UVs are set up on the object.
The full analysis with a minimal repro scene is on GitHub — happy to share if that helps the dev team reproduce it independently.
Small update to the GitHub repository — two broken issue links in the README have been fixed, and a ready-to-use scene/demo.vrscene is now included so the demo scene can be rendered directly without running the build script first.