فهرست منبع

Added LogLuvLoader. (#22857)

* Added LogLuvLoader.

* LogLuvLoader: Update color converison matrix.

* LogLuvLoader: Fix matrix.
Michael Herzog 3 سال پیش
والد
کامیت
d4712577c6

+ 1 - 0
examples/files.json

@@ -114,6 +114,7 @@
 		"webgl_loader_texture_hdr",
 		"webgl_loader_texture_ktx",
 		"webgl_loader_texture_ktx2",
+		"webgl_loader_texture_logluv",
 		"webgl_loader_texture_lottie",
 		"webgl_loader_texture_pvrtc",
 		"webgl_loader_texture_rgbm",

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 245 - 0
examples/jsm/loaders/LogLuvLoader.js


BIN
examples/screenshots/webgl_loader_texture_logluv.jpg


BIN
examples/textures/memorial.tif


+ 105 - 0
examples/webgl_loader_texture_logluv.html

@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<title>three.js webgl - materials - LogLuv texture loader</title>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+		<link type="text/css" rel="stylesheet" href="main.css">
+	</head>
+	<body>
+
+		<div id="info">
+			<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - webgl LogLuv texture loader example
+		</div>
+
+		<script type="module">
+
+			import * as THREE from '../build/three.module.js';
+
+			import { GUI } from './jsm/libs/lil-gui.module.min.js';
+
+			import { LogLuvLoader } from './jsm/loaders/LogLuvLoader.js';
+
+			const params = {
+				exposure: 2.0
+			};
+
+			let renderer, scene, camera;
+
+			init();
+
+			function init() {
+
+				renderer = new THREE.WebGLRenderer();
+				renderer.setPixelRatio( window.devicePixelRatio );
+				renderer.setSize( window.innerWidth, window.innerHeight );
+				document.body.appendChild( renderer.domElement );
+
+				renderer.toneMapping = THREE.ReinhardToneMapping;
+				renderer.toneMappingExposure = params.exposure;
+
+				renderer.outputEncoding = THREE.sRGBEncoding;
+
+				scene = new THREE.Scene();
+
+				const aspect = window.innerWidth / window.innerHeight;
+
+				camera = new THREE.OrthographicCamera( - aspect, aspect, 1, - 1, 0, 1 );
+
+				new LogLuvLoader().load( 'textures/memorial.tif', function ( texture ) {
+
+					const material = new THREE.MeshBasicMaterial( { map: texture } );
+
+					const quad = new THREE.PlaneGeometry( 1, 1.5 );
+
+					const mesh = new THREE.Mesh( quad, material );
+
+					scene.add( mesh );
+
+					render();
+
+				} );
+
+				//
+
+				const gui = new GUI();
+
+				gui.add( params, 'exposure', 0, 4, 0.01 ).onChange( render );
+				gui.open();
+
+				//
+
+				window.addEventListener( 'resize', onWindowResize );
+
+			}
+
+			function onWindowResize() {
+
+				const aspect = window.innerWidth / window.innerHeight;
+
+				const frustumHeight = camera.top - camera.bottom;
+
+				camera.left = - frustumHeight * aspect / 2;
+				camera.right = frustumHeight * aspect / 2;
+
+				camera.updateProjectionMatrix();
+
+				renderer.setSize( window.innerWidth, window.innerHeight );
+
+				render();
+
+			}
+
+			//
+
+			function render() {
+
+				renderer.toneMappingExposure = params.exposure;
+
+				renderer.render( scene, camera );
+
+			}
+
+		</script>
+	</body>
+</html>

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است