瀏覽代碼

MeshPhysicalMaterial: Update examples and docs for .transmission

Don McCurdy 5 年之前
父節點
當前提交
b2e251e1cb

+ 13 - 7
docs/api/en/materials/MeshPhysicalMaterial.html

@@ -24,7 +24,7 @@
 			</li>
 			<li>
 				<b>Physically-based transparency:</b> One limitation of [page:Material.opacity .opacity] is
-				that highly transparent materials are less reflective. Physically-based [page:.transparency]
+				that highly transparent materials are less reflective. Physically-based [page:.transmission]
 				provides a more realistic option for thin, transparent surfaces like glass.
 			</li>
 			<li>
@@ -62,7 +62,7 @@
 			[example:webgl_materials_variations_physical materials / variations / physical]<br />
 			[example:webgl_materials_physical_clearcoat materials / physical / clearcoat]<br />
 			[example:webgl_materials_physical_reflectivity materials / physical / reflectivity]<br />
-			[example:webgl_materials_physical_transparency materials / physical / transparency]
+			[example:webgl_materials_physical_transmission materials / physical / transmission]
 		</p>
 
 		<h2>Constructor</h2>
@@ -128,15 +128,21 @@
 		This models the reflectivity of non-metallic materials. It has no effect when [page:MeshStandardMaterial.metalness metalness] is *1.0*
 		</p>
 
-		<h3>[property:Float transparency]</h3>
+		<h3>[property:Float transmission]</h3>
 		<p>
-		Degree of transparency, from *0.0* to *1.0*. Default is *0.0*.<br />
+		Degree of transmission (or optical transparency), from *0.0* to *1.0*. Default is *0.0*.<br />
 
-		Thin, transparent or semitransparent, plastic or glass materials remain largely reflective even if they are mostly transparent.
+		Thin, transparent or semitransparent, plastic or glass materials remain largely reflective even if they are fully transmissive.
 
-		The transparency property can be used to model these materials.<br />
+		The transmission property can be used to model these materials.<br />
 
-		When transparency is non-zero, [page:Material.opacity opacity] should be set to *1*.
+		When transmission is non-zero, [page:Material.opacity opacity] should be set to *1*.
+		</p>
+
+		<h3>[property:Texture transmissionMap]</h3>
+		<p>
+			The red channel of this texture is multiplied against [page:.transmission], for per-pixel control
+			over optical transparency. Default is *null*.
 		</p>
 
 		<h2>Methods</h2>

+ 1 - 1
examples/files.js

@@ -156,7 +156,7 @@ var files = {
 		"webgl_materials_physical_clearcoat",
 		"webgl_materials_physical_reflectivity",
 		"webgl_materials_physical_sheen",
-		"webgl_materials_physical_transparency",
+		"webgl_materials_physical_transmission",
 		"webgl_materials_shaders_fresnel",
 		"webgl_materials_standard",
 		"webgl_materials_subsurface_scattering",

+ 8 - 8
examples/webgl_materials_physical_transparency.html → examples/webgl_materials_physical_transmission.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<title>threejs webgl - materials - transparency</title>
+		<title>threejs webgl - materials - transmission</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">
@@ -9,7 +9,7 @@
 	<body>
 
 		<div id="container"></div>
-		<div id="info"><a href="https://threejs.org" target="_blank" rel="noopener">threejs</a> - Transparency with Premultiplied Alpha (right) and without (left)</div>
+		<div id="info"><a href="https://threejs.org" target="_blank" rel="noopener">threejs</a> - Transmission with Premultiplied Alpha (right) and without (left)</div>
 
 		<script type="module">
 
@@ -23,7 +23,7 @@
 
 			var params = {
 				color: 0xffffff,
-				transparency: 0.90,
+				transmission: 0.90,
 				envMapIntensity: 1,
 				lightIntensity: 1,
 				exposure: 1
@@ -96,8 +96,8 @@
 					envMap: hdrCubeRenderTarget.texture,
 					envMapIntensity: params.envMapIntensity,
 					depthWrite: false,
-					transparency: params.transparency, // use material.transparency for glass materials
-					opacity: 1,                        // set material.opacity to 1 when material.transparency is non-zero
+					transmission: params.transmission, // use material.transmission for glass materials
+					opacity: 1,                        // set material.opacity to 1 when material.transmission is non-zero
 					transparent: true
 				} );
 
@@ -166,11 +166,11 @@
 
 					} );
 
-				gui.add( params, 'transparency', 0, 1 )
+				gui.add( params, 'transmission', 0, 1 )
 					.onChange( function () {
 
-						material1.transparency = material2.transparency = params.transparency;
-						material1b.transparency = material2b.transparency = params.transparency;
+						material1.transmission = material2.transmission = params.transmission;
+						material1b.transmission = material2b.transmission = params.transmission;
 
 					} );
 

+ 10 - 4
src/materials/MeshPhysicalMaterial.d.ts

@@ -8,15 +8,21 @@ import { Color } from './../math/Color';
 
 export interface MeshPhysicalMaterialParameters
 	extends MeshStandardMaterialParameters {
-	reflectivity?: number;
+
 	clearcoat?: number;
+	clearcoatMap: Texture | null;
 	clearcoatRoughness?: number;
+	clearcoatRoughnessMap: Texture | null;
+	clearcoatNormalScale?: Vector2;
+	clearcoatNormalMap?: Texture | null;
+
+	reflectivity?: number;
 
 	sheen?: Color;
 
-	clearcoatNormalScale?: Vector2;
-	clearcoatNormalMap?: Texture | null;
-	transparency?: number;
+	transmission?: number;
+	transmissionMap?: Texture | null;
+
 }
 
 export class MeshPhysicalMaterial extends MeshStandardMaterial {