porównywanie metod tworzenia materiału skybox w three.js

Jeśli chodzi o tworzenie skyboxów w three.js, widziałem dwie różne szkoły myślenia. Zakładając, że mamy kod

var imagePrefix = "images/mountains-";
var directions  = ["xpos", "xneg", "ypos", "yneg", "zpos", "zneg"];
var imageSuffix = ".jpg";
var skyGeometry = new THREE.CubeGeometry( 10000, 10000, 10000 );    

W obu metodach tworzy się naprawdę dużą kostkę i stosuje tekstury. Różnica polega na tym, czy używane są shadery. Na przykład:

Materiał bez użycia modułu cieniującego:

var materialArray = [];
for (var i = 0; i < 6; i++)
    materialArray.push( new THREE.MeshBasicMaterial({
        map: THREE.ImageUtils.loadTexture( imagePrefix + directions[i] + imageSuffix ),
        side: THREE.BackSide
    }));
var skyMaterial = new THREE.MeshFaceMaterial( materialArray );
var skyBox = new THREE.Mesh( skyGeometry, skyMaterial );
scene.add( skyBox );

Materiał wykorzystujący shader:

var imageURLs = [];
for (var i = 0; i < 6; i++)
    imageURLs.push( imagePrefix + directions[i] + imageSuffix );
var textureCube = THREE.ImageUtils.loadTextureCube( imageURLs );
var shader = THREE.ShaderLib[ "cube" ];
shader.uniforms[ "tCube" ].value = textureCube;
var skyMaterial = new THREE.ShaderMaterial( {
    fragmentShader: shader.fragmentShader,
    vertexShader: shader.vertexShader,
    uniforms: shader.uniforms,
    depthWrite: false,
    side: THREE.BackSide
} );
var skyBox = new THREE.Mesh( skyGeometry, skyMaterial );
scene.add( skyBox );

Moje nieformalne testy wydajności nie wykazują znaczącej różnicy w FPS przy użyciu obrazów 2048x2048 dla tekstur. Kod bez cieniowania jest łatwiejszy (przynajmniej dla mnie) do zrozumienia. Czy są sytuacje, w których istnieje korzyść z używania tekstury opartej na cieniowaniu?

questionAnswers(1)

yourAnswerToTheQuestion