StandardRenderingPipeline предлагает набор эффектов постобработки, которые относятся к реальному миру. Существуют различные эффекты после обработки, такие как эффект освещения и эффект освещения.
В приведенном ниже примере вы увидите различные эффекты, такие как эффект линзы, эффект постобработки света и т. Д.
Он использует текстуру куба HDR, и текстура должна быть .hdr. Эта текстура дает панаромный эффект, который можно увидеть, когда вы поворачиваете камеру.
var hdrTexture = new BABYLON.HDRCubeTexture("images/GravelPlaza_REF.hdr", scene, 512);
Стандартный класс конвейера рендеринга вызывается для получения эффекта с помощью следующей строки кода:
// Create rendering pipeline var pipeline = new BABYLON.StandardRenderingPipeline("standard", scene, 1.0 / devicePixelRatio, null, [camera]); pipeline.lensTexture = new BABYLON.Texture("images/lensdirt.jpg", scene)
В демонстрации, показанной ниже, мы создадим среду cubetexture. Для этого мы будем использовать наземную сетку и применим стандартный конвейер рендеринга ко всей сцене.
Текстура передается ей с помощью lensTexture, которая является изображением, и вы можете видеть ту же текстуру, что и при перемещении сцены.
демонстрация
<!doctype html> <html> <head> <meta charset = "utf-8"> <title>BabylonJs - Basic Element-Creating Scene</title> <script src = "babylon.js"></script> <style> canvas {width: 100%; height: 100%;} </style> </head> <body> <canvas id = "renderCanvas"></canvas> <script type = "text/javascript"> var canvas = document.getElementById("renderCanvas"); var engine = new BABYLON.Engine(canvas, true); var createScene = function() { var scene = new BABYLON.Scene(engine); var camera = new BABYLON.ArcRotateCamera("Camera", -Math.PI / 4, Math.PI / 2.5, 200, BABYLON.Vector3.Zero(), scene); camera.attachControl(canvas, true); camera.minZ = 0.1; // Light new BABYLON.PointLight("point", new BABYLON.Vector3(0, 40, 0), scene); // Environment Texture var hdrTexture = new BABYLON.HDRCubeTexture("images/GravelPlaza_REF.hdr", scene, 512); // Skybox var hdrSkybox = BABYLON.Mesh.CreateBox("hdrSkyBox", 1000.0, scene); var hdrSkyboxMaterial = new BABYLON.PBRMaterial("skyBox", scene); hdrSkyboxMaterial.backFaceCulling = false; hdrSkyboxMaterial.reflectionTexture = hdrTexture.clone(); hdrSkyboxMaterial.reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE; hdrSkyboxMaterial.microSurface = 1.0; hdrSkyboxMaterial.cameraExposure = 0.6; hdrSkyboxMaterial.cameraContrast = 1.6; hdrSkyboxMaterial.disableLighting = true; hdrSkybox.material = hdrSkyboxMaterial; hdrSkybox.infiniteDistance = true; // Create mesh var woodbox = BABYLON.MeshBuilder.CreateBox("plane", { width: 40, height: 50, depth: 65 }, scene); var wood = new BABYLON.PBRMaterial("wood", scene); wood.reflectionTexture = hdrTexture; wood.directIntensity = 1.5; wood.environmentIntensity = 0.5; wood.specularIntensity = 0.3; wood.cameraExposure = 0.9; wood.cameraContrast = 1.6; wood.reflectivityTexture = new BABYLON.Texture("images/reflectivity.png", scene); wood.useMicroSurfaceFromReflectivityMapAlpha = true; wood.albedoColor = BABYLON.Color3.White(); wood.albedoTexture = new BABYLON.Texture("images/albedo.png", scene); woodbox.material = wood; // Create rendering pipeline var pipeline = new BABYLON.StandardRenderingPipeline("standard", scene, 1.0 / devicePixelRatio, null, [camera]); pipeline.lensTexture = new BABYLON.Texture("images/lensdirt.jpg", scene); // Return scene return scene; }; var scene = createScene(); engine.runRenderLoop(function() { scene.render(); }); </script> </body> </html>
Создайте папку с изображениями и сохраните в ней файл .hdr. Мы использовали images / GravelPlaza_REF.hdr с www.hdrlabs.com .
Вы можете скачать файлы типа .hdr по вашему выбору и использовать их в демонстрационной ссылке.
Выход
Выше строка кода будет генерировать следующий вывод —
В этой демонстрации мы использовали images images / GravelPlaza_REF.hdr, images / reflectivity.png, images / albedo.png, images / lensdirt.jpg . Изображения хранятся в папке images / локально, а также вставляются ниже для справки. Вы можете скачать любые изображения на ваш выбор и использовать в демонстрационной ссылке. Обратите внимание, что здесь сложно вставить файлы .hdr, так как их размер очень велик.