diff --git a/docs/api/en/scenes/DensityFog.html b/docs/api/en/scenes/DensityFog.html new file mode 100644 index 00000000000000..1d5a5aa232fd11 --- /dev/null +++ b/docs/api/en/scenes/DensityFog.html @@ -0,0 +1,61 @@ + + + + + + + + + +

[name]

+ +

This class contains the parameters that define exponential or exponential squared fog, which gives a clear view near the camera and an exponentially or faster than exponentially densening fog farther from the camera.

+ +

Code Example

+ + const scene = new THREE.Scene(); + scene.fog = new THREE.DensityFog( 0xcccccc, 0.002, true ); + + +

Constructor

+ + +

[name]( [param:Integer color], [param:Float density], [param:bool squared] )

+ +

The color parameter is passed to the [page:Color] constructor to set the color property. Color can be a hexadecimal integer or a CSS-style string.

+

Properties

+ +

[property:Boolean isDensityFog]

+

+ Read-only flag to check if a given object is of type [name]. +

+ +

[property:String name]

+

Optional name of the object (doesn't need to be unique). Default is an empty string.

+ +

[property:Color color]

+

Fog color. Example: If set to black, far away objects will be rendered black.

+ +

[property:Float density]

+

Defines how fast the fog will grow dense.

+

Default is 0.00025.

+ +

[property:bool squared]

+

Defines whether the product of density and distance is squared in the exponent.

+

Default is true.

+ +

Methods

+ +

[method:DensityFog clone]()

+

Returns a new DensityFog instance with the same parameters as this one.

+ +

[method:Object toJSON]()

+

Return DensityFog data in JSON format.

+ +

Source

+ +

+ [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js] +

+ + diff --git a/docs/api/en/scenes/Fog.html b/docs/api/en/scenes/Fog.html index aca3beb61d5c68..1132cfb38a2583 100644 --- a/docs/api/en/scenes/Fog.html +++ b/docs/api/en/scenes/Fog.html @@ -9,53 +9,7 @@

[name]

-

This class contains the parameters that define linear fog, i.e., that grows linearly denser with the distance.

+

This class is deprecated. Use RangeFog instead.

-

Code Example

- - const scene = new THREE.Scene(); - scene.fog = new THREE.Fog( 0xcccccc, 10, 15 ); - - -

Constructor

- - -

[name]( [param:Integer color], [param:Float near], [param:Float far] )

-

The color parameter is passed to the [page:Color] constructor to set the color property. Color can be a hexadecimal integer or a CSS-style string.

- -

Properties

- -

[property:Boolean isFog]

-

- Read-only flag to check if a given object is of type [name]. -

- -

[property:String name]

-

Optional name of the object (doesn't need to be unique). Default is an empty string.

- -

[property:Color color]

-

Fog color. Example: If set to black, far away objects will be rendered black.

- -

[property:Float near]

-

The minimum distance to start applying fog. Objects that are less than 'near' units from the active camera won't be affected by fog.

-

Default is 1.

- -

[property:Float far]

-

The maximum distance at which fog stops being calculated and applied. Objects that are more than 'far' units away from the active camera won't be affected by fog.

-

Default is 1000.

- -

Methods

- -

[method:Fog clone]()

-

Returns a new fog instance with the same parameters as this one.

- -

[method:Object toJSON]()

-

Return fog data in JSON format.

- -

Source

- -

- [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js] -

diff --git a/docs/api/en/scenes/FogExp2.html b/docs/api/en/scenes/FogExp2.html index 8f14e3270fd0bb..55196ba0b7b72a 100644 --- a/docs/api/en/scenes/FogExp2.html +++ b/docs/api/en/scenes/FogExp2.html @@ -9,49 +9,7 @@

[name]

-

This class contains the parameters that define exponential squared fog, which gives a clear view near the camera and a faster than exponentially densening fog farther from the camera.

+

This class is deprecated. Use DensityFog instead.

-

Code Example

- - const scene = new THREE.Scene(); - scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 ); - - -

Constructor

- - -

[name]( [param:Integer color], [param:Float density] )

- -

The color parameter is passed to the [page:Color] constructor to set the color property. Color can be a hexadecimal integer or a CSS-style string.

-

Properties

- -

[property:Boolean isFogExp2]

-

- Read-only flag to check if a given object is of type [name]. -

- -

[property:String name]

-

Optional name of the object (doesn't need to be unique). Default is an empty string.

- -

[property:Color color]

-

Fog color. Example: If set to black, far away objects will be rendered black.

- -

[property:Float density]

-

Defines how fast the fog will grow dense.

-

Default is 0.00025.

- -

Methods

- -

[method:FogExp2 clone]()

-

Returns a new FogExp2 instance with the same parameters as this one.

- -

[method:Object toJSON]()

-

Return FogExp2 data in JSON format.

- -

Source

- -

- [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js] -

diff --git a/docs/api/en/scenes/RangeFog.html b/docs/api/en/scenes/RangeFog.html new file mode 100644 index 00000000000000..bc0125e1404a70 --- /dev/null +++ b/docs/api/en/scenes/RangeFog.html @@ -0,0 +1,61 @@ + + + + + + + + + +

[name]

+ +

This class contains the parameters that define smooth ranged fog, i.e., that grows smoothly denser from the near to the far distance. The dependence on distance is not linear, but follows a smoothstep curve.

+ +

Code Example

+ + const scene = new THREE.Scene(); + scene.fog = new THREE.RangeFog( 0xcccccc, 10, 15 ); + + +

Constructor

+ + +

[name]( [param:Integer color], [param:Float near], [param:Float far] )

+

The color parameter is passed to the [page:Color] constructor to set the color property. Color can be a hexadecimal integer or a CSS-style string.

+ +

Properties

+ +

[property:Boolean isRangeFog]

+

+ Read-only flag to check if a given object is of type [name]. +

+ +

[property:String name]

+

Optional name of the object (doesn't need to be unique). Default is an empty string.

+ +

[property:Color color]

+

Fog color. Example: If set to black, far away objects will be rendered black.

+ +

[property:Float near]

+

The minimum distance to start applying fog. Objects that are less than 'near' units from the active camera won't be affected by fog.

+

Default is 1.

+ +

[property:Float far]

+

The maximum distance at which fog stops being calculated and applied. Objects that are more than 'far' units away from the active camera won't be affected by fog.

+

Default is 1000.

+ +

Methods

+ +

[method:RangeFog clone]()

+

Returns a new RangeFog instance with the same parameters as this one.

+ +

[method:Object toJSON]()

+

Return RangeFog data in JSON format.

+ +

Source

+ +

+ [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js] +

+ + diff --git a/docs/list.json b/docs/list.json index 63a37b65f5e050..3e4a75ed585190 100644 --- a/docs/list.json +++ b/docs/list.json @@ -300,8 +300,8 @@ }, "Scenes": { - "Fog": "api/en/scenes/Fog", - "FogExp2": "api/en/scenes/FogExp2", + "RangeFog": "api/en/scenes/RangeFog", + "DensityFog": "api/en/scenes/DensityFog", "Scene": "api/en/scenes/Scene" }, diff --git a/editor/js/Sidebar.Scene.js b/editor/js/Sidebar.Scene.js index d5b445a642cb8d..d26096a9bc50b8 100644 --- a/editor/js/Sidebar.Scene.js +++ b/editor/js/Sidebar.Scene.js @@ -1,6 +1,6 @@ import * as THREE from 'three'; -import { UIPanel, UIBreak, UIRow, UIColor, UISelect, UIText, UINumber } from './libs/ui.js'; +import { UIPanel, UIBreak, UIRow, UIColor, UISelect, UIText, UINumber, UICheckbox } from './libs/ui.js'; import { UIOutliner, UITexture } from './libs/ui.three.js'; function SidebarScene( editor ) { @@ -277,7 +277,8 @@ function SidebarScene( editor ) { fogColor.getHexValue(), fogNear.getValue(), fogFar.getValue(), - fogDensity.getValue() + fogDensity.getValue(), + fogSquared.getValue() ); } @@ -289,7 +290,8 @@ function SidebarScene( editor ) { fogColor.getHexValue(), fogNear.getValue(), fogFar.getValue(), - fogDensity.getValue() + fogDensity.getValue(), + fogSquared.getValue() ); } @@ -298,8 +300,8 @@ function SidebarScene( editor ) { const fogType = new UISelect().setOptions( { 'None': '', - 'Fog': 'Linear', - 'FogExp2': 'Exponential' + 'RangeFog': 'RangeFog', + 'DensityFog': 'DensityFog' } ).setWidth( '150px' ); fogType.onChange( function () { @@ -339,6 +341,11 @@ function SidebarScene( editor ) { const fogDensity = new UINumber( 0.05 ).setWidth( '40px' ).setRange( 0, 0.1 ).setStep( 0.001 ).setPrecision( 3 ).onChange( onFogSettingsChanged ); fogPropertiesRow.add( fogDensity ); + + // fog squared + + const fogSquared = new UICheckbox( true ).onChange( onFogSettingsChanged ); + fogPropertiesRow.add( fogSquared ); // @@ -436,16 +443,17 @@ function SidebarScene( editor ) { fogColor.setHexValue( scene.fog.color.getHex() ); - if ( scene.fog.isFog ) { + if ( scene.fog.isRangeFog ) { - fogType.setValue( 'Fog' ); + fogType.setValue( 'RangeFog' ); fogNear.setValue( scene.fog.near ); fogFar.setValue( scene.fog.far ); - } else if ( scene.fog.isFogExp2 ) { + } else if ( scene.fog.isDensityFog ) { - fogType.setValue( 'FogExp2' ); + fogType.setValue( 'DensityFog' ); fogDensity.setValue( scene.fog.density ); + fogSquared.setValue( scene.fog.squared ); } @@ -466,9 +474,10 @@ function SidebarScene( editor ) { const type = fogType.getValue(); fogPropertiesRow.setDisplay( type === 'None' ? 'none' : '' ); - fogNear.setDisplay( type === 'Fog' ? '' : 'none' ); - fogFar.setDisplay( type === 'Fog' ? '' : 'none' ); - fogDensity.setDisplay( type === 'FogExp2' ? '' : 'none' ); + fogNear.setDisplay( type === 'RangeFog' ? '' : 'none' ); + fogFar.setDisplay( type === 'RangeFog' ? '' : 'none' ); + fogDensity.setDisplay( type === 'DensityFog' ? '' : 'none' ); + fogSquared.setDisplay( type === 'DensityFog' ? '' : 'none' ); } diff --git a/editor/js/Viewport.js b/editor/js/Viewport.js index 67b51b4c945847..cc468271810e02 100644 --- a/editor/js/Viewport.js +++ b/editor/js/Viewport.js @@ -570,18 +570,18 @@ function Viewport( editor ) { // fog - signals.sceneFogChanged.add( function ( fogType, fogColor, fogNear, fogFar, fogDensity ) { + signals.sceneFogChanged.add( function ( fogType, fogColor, fogNear, fogFar, fogDensity, fogSquared ) { switch ( fogType ) { case 'None': scene.fog = null; break; - case 'Fog': - scene.fog = new THREE.Fog( fogColor, fogNear, fogFar ); + case 'RangeFog': + scene.fog = new THREE.RangeFog( fogColor, fogNear, fogFar ); break; - case 'FogExp2': - scene.fog = new THREE.FogExp2( fogColor, fogDensity ); + case 'DensityFog': + scene.fog = new THREE.DensityFog( fogColor, fogDensity, fogSquared ); break; } @@ -590,18 +590,19 @@ function Viewport( editor ) { } ); - signals.sceneFogSettingsChanged.add( function ( fogType, fogColor, fogNear, fogFar, fogDensity ) { + signals.sceneFogSettingsChanged.add( function ( fogType, fogColor, fogNear, fogFar, fogDensity, fogSquared ) { switch ( fogType ) { - case 'Fog': + case 'RangeFog': scene.fog.color.setHex( fogColor ); scene.fog.near = fogNear; scene.fog.far = fogFar; break; - case 'FogExp2': + case 'DensityFog': scene.fog.color.setHex( fogColor ); scene.fog.density = fogDensity; + scene.fog.squared = fogSquared; break; } diff --git a/examples/files.json b/examples/files.json index 566a99fa7e06c2..ad924bde4f778d 100644 --- a/examples/files.json +++ b/examples/files.json @@ -39,6 +39,7 @@ "webgl_geometry_spline_editor", "webgl_geometry_teapot", "webgl_geometry_terrain", + "webgl_geometry_terrain_fog_types", "webgl_geometry_terrain_raycast", "webgl_geometry_text", "webgl_geometry_text_shapes", diff --git a/examples/screenshots/games_fps.jpg b/examples/screenshots/games_fps.jpg index 91dfd581fc9e65..25583a3988ca34 100644 Binary files a/examples/screenshots/games_fps.jpg and b/examples/screenshots/games_fps.jpg differ diff --git a/examples/screenshots/misc_controls_fly.jpg b/examples/screenshots/misc_controls_fly.jpg index 8fff9703600cf6..cf04539efd36dc 100644 Binary files a/examples/screenshots/misc_controls_fly.jpg and b/examples/screenshots/misc_controls_fly.jpg differ diff --git a/examples/screenshots/misc_controls_map.jpg b/examples/screenshots/misc_controls_map.jpg index 56205971b36308..36211f763095c8 100644 Binary files a/examples/screenshots/misc_controls_map.jpg and b/examples/screenshots/misc_controls_map.jpg differ diff --git a/examples/screenshots/misc_controls_orbit.jpg b/examples/screenshots/misc_controls_orbit.jpg index f86c191dee4520..b35f932aecc96c 100644 Binary files a/examples/screenshots/misc_controls_orbit.jpg and b/examples/screenshots/misc_controls_orbit.jpg differ diff --git a/examples/screenshots/misc_controls_trackball.jpg b/examples/screenshots/misc_controls_trackball.jpg index 5ebd54c5b11688..560a917cd4441d 100644 Binary files a/examples/screenshots/misc_controls_trackball.jpg and b/examples/screenshots/misc_controls_trackball.jpg differ diff --git a/examples/screenshots/misc_exporter_draco.jpg b/examples/screenshots/misc_exporter_draco.jpg index e6758bfc350ed2..6c27bb6b54792b 100644 Binary files a/examples/screenshots/misc_exporter_draco.jpg and b/examples/screenshots/misc_exporter_draco.jpg differ diff --git a/examples/screenshots/misc_exporter_ply.jpg b/examples/screenshots/misc_exporter_ply.jpg index 97d36c1bafa192..1119d7750b55bb 100644 Binary files a/examples/screenshots/misc_exporter_ply.jpg and b/examples/screenshots/misc_exporter_ply.jpg differ diff --git a/examples/screenshots/misc_exporter_stl.jpg b/examples/screenshots/misc_exporter_stl.jpg index ca2c7958214706..9a77f5683d5d26 100644 Binary files a/examples/screenshots/misc_exporter_stl.jpg and b/examples/screenshots/misc_exporter_stl.jpg differ diff --git a/examples/screenshots/webaudio_orientation.jpg b/examples/screenshots/webaudio_orientation.jpg index 5c2f7ea53b382b..fc9bf2d4825243 100644 Binary files a/examples/screenshots/webaudio_orientation.jpg and b/examples/screenshots/webaudio_orientation.jpg differ diff --git a/examples/screenshots/webaudio_sandbox.jpg b/examples/screenshots/webaudio_sandbox.jpg index 6a7685d6200fa1..96372efb5a7a12 100644 Binary files a/examples/screenshots/webaudio_sandbox.jpg and b/examples/screenshots/webaudio_sandbox.jpg differ diff --git a/examples/screenshots/webgl2_buffergeometry_attributes_integer.jpg b/examples/screenshots/webgl2_buffergeometry_attributes_integer.jpg index 063ffee2bbae9d..56ad963d68975c 100644 Binary files a/examples/screenshots/webgl2_buffergeometry_attributes_integer.jpg and b/examples/screenshots/webgl2_buffergeometry_attributes_integer.jpg differ diff --git a/examples/screenshots/webgl2_buffergeometry_attributes_none.jpg b/examples/screenshots/webgl2_buffergeometry_attributes_none.jpg index 88cf752b815ed6..fa8a55c8d3cd52 100644 Binary files a/examples/screenshots/webgl2_buffergeometry_attributes_none.jpg and b/examples/screenshots/webgl2_buffergeometry_attributes_none.jpg differ diff --git a/examples/screenshots/webgl2_multisampled_renderbuffers.jpg b/examples/screenshots/webgl2_multisampled_renderbuffers.jpg index c43e70bd31af24..aa322059a66bbe 100644 Binary files a/examples/screenshots/webgl2_multisampled_renderbuffers.jpg and b/examples/screenshots/webgl2_multisampled_renderbuffers.jpg differ diff --git a/examples/screenshots/webgl_animation_multiple.jpg b/examples/screenshots/webgl_animation_multiple.jpg index 9b7817ef7e5c7a..f66c076bd32b2b 100644 Binary files a/examples/screenshots/webgl_animation_multiple.jpg and b/examples/screenshots/webgl_animation_multiple.jpg differ diff --git a/examples/screenshots/webgl_animation_skinning_additive_blending.jpg b/examples/screenshots/webgl_animation_skinning_additive_blending.jpg index 18837c942432ef..856071772e61f5 100644 Binary files a/examples/screenshots/webgl_animation_skinning_additive_blending.jpg and b/examples/screenshots/webgl_animation_skinning_additive_blending.jpg differ diff --git a/examples/screenshots/webgl_animation_skinning_ik.jpg b/examples/screenshots/webgl_animation_skinning_ik.jpg index 32a72a34c120ad..c94467ce751b73 100644 Binary files a/examples/screenshots/webgl_animation_skinning_ik.jpg and b/examples/screenshots/webgl_animation_skinning_ik.jpg differ diff --git a/examples/screenshots/webgl_animation_skinning_morph.jpg b/examples/screenshots/webgl_animation_skinning_morph.jpg index f77cafb633883f..02a424c8f89930 100644 Binary files a/examples/screenshots/webgl_animation_skinning_morph.jpg and b/examples/screenshots/webgl_animation_skinning_morph.jpg differ diff --git a/examples/screenshots/webgl_buffergeometry.jpg b/examples/screenshots/webgl_buffergeometry.jpg index c4fa982933f232..968c1cfeb77061 100644 Binary files a/examples/screenshots/webgl_buffergeometry.jpg and b/examples/screenshots/webgl_buffergeometry.jpg differ diff --git a/examples/screenshots/webgl_buffergeometry_points.jpg b/examples/screenshots/webgl_buffergeometry_points.jpg index 2e97e5efc681e8..71124b9535d4e2 100644 Binary files a/examples/screenshots/webgl_buffergeometry_points.jpg and b/examples/screenshots/webgl_buffergeometry_points.jpg differ diff --git a/examples/screenshots/webgl_buffergeometry_points_interleaved.jpg b/examples/screenshots/webgl_buffergeometry_points_interleaved.jpg index 0021f4de97b000..01a1e12559e1cd 100644 Binary files a/examples/screenshots/webgl_buffergeometry_points_interleaved.jpg and b/examples/screenshots/webgl_buffergeometry_points_interleaved.jpg differ diff --git a/examples/screenshots/webgl_buffergeometry_uint.jpg b/examples/screenshots/webgl_buffergeometry_uint.jpg index b6fef7bf55db8b..676473fbde7e0c 100644 Binary files a/examples/screenshots/webgl_buffergeometry_uint.jpg and b/examples/screenshots/webgl_buffergeometry_uint.jpg differ diff --git a/examples/screenshots/webgl_geometry_csg.jpg b/examples/screenshots/webgl_geometry_csg.jpg index d776bbc9c76d62..7c4b242eba90f6 100644 Binary files a/examples/screenshots/webgl_geometry_csg.jpg and b/examples/screenshots/webgl_geometry_csg.jpg differ diff --git a/examples/screenshots/webgl_geometry_dynamic.jpg b/examples/screenshots/webgl_geometry_dynamic.jpg index b4b29381bac0d8..114b5c9a848d57 100644 Binary files a/examples/screenshots/webgl_geometry_dynamic.jpg and b/examples/screenshots/webgl_geometry_dynamic.jpg differ diff --git a/examples/screenshots/webgl_geometry_terrain.jpg b/examples/screenshots/webgl_geometry_terrain.jpg index 3ebff65e3000b0..44a3b116fd7ec3 100644 Binary files a/examples/screenshots/webgl_geometry_terrain.jpg and b/examples/screenshots/webgl_geometry_terrain.jpg differ diff --git a/examples/screenshots/webgl_geometry_terrain_fog_types.jpg b/examples/screenshots/webgl_geometry_terrain_fog_types.jpg new file mode 100644 index 00000000000000..d9270b0cff21bc Binary files /dev/null and b/examples/screenshots/webgl_geometry_terrain_fog_types.jpg differ diff --git a/examples/screenshots/webgl_geometry_text.jpg b/examples/screenshots/webgl_geometry_text.jpg index e963c8adc66e9b..c85ea6a540a58b 100644 Binary files a/examples/screenshots/webgl_geometry_text.jpg and b/examples/screenshots/webgl_geometry_text.jpg differ diff --git a/examples/screenshots/webgl_gpgpu_birds.jpg b/examples/screenshots/webgl_gpgpu_birds.jpg index e6763ff0613c49..2abc2638c257be 100644 Binary files a/examples/screenshots/webgl_gpgpu_birds.jpg and b/examples/screenshots/webgl_gpgpu_birds.jpg differ diff --git a/examples/screenshots/webgl_gpgpu_birds_gltf.jpg b/examples/screenshots/webgl_gpgpu_birds_gltf.jpg index ece7bc5c68f6f0..f7f82b02331cc2 100644 Binary files a/examples/screenshots/webgl_gpgpu_birds_gltf.jpg and b/examples/screenshots/webgl_gpgpu_birds_gltf.jpg differ diff --git a/examples/screenshots/webgl_lights_hemisphere.jpg b/examples/screenshots/webgl_lights_hemisphere.jpg index 0dc8c6c1f70f1c..4cfe9a34f75ac8 100644 Binary files a/examples/screenshots/webgl_lights_hemisphere.jpg and b/examples/screenshots/webgl_lights_hemisphere.jpg differ diff --git a/examples/screenshots/webgl_lines_dashed.jpg b/examples/screenshots/webgl_lines_dashed.jpg index 3fe2b2c735b3ee..b3eb5e636fb043 100644 Binary files a/examples/screenshots/webgl_lines_dashed.jpg and b/examples/screenshots/webgl_lines_dashed.jpg differ diff --git a/examples/screenshots/webgl_loader_3mf_materials.jpg b/examples/screenshots/webgl_loader_3mf_materials.jpg index 929fb09e60e929..607cc7b4e8e111 100644 Binary files a/examples/screenshots/webgl_loader_3mf_materials.jpg and b/examples/screenshots/webgl_loader_3mf_materials.jpg differ diff --git a/examples/screenshots/webgl_loader_draco.jpg b/examples/screenshots/webgl_loader_draco.jpg index 6c1b366e4b61c1..77a10f64d3b212 100644 Binary files a/examples/screenshots/webgl_loader_draco.jpg and b/examples/screenshots/webgl_loader_draco.jpg differ diff --git a/examples/screenshots/webgl_loader_fbx.jpg b/examples/screenshots/webgl_loader_fbx.jpg index 9ee93d1c9e6100..a8c7fea940cbb0 100644 Binary files a/examples/screenshots/webgl_loader_fbx.jpg and b/examples/screenshots/webgl_loader_fbx.jpg differ diff --git a/examples/screenshots/webgl_loader_md2.jpg b/examples/screenshots/webgl_loader_md2.jpg index 13d96b9010287f..cac1ddd11a8ebb 100644 Binary files a/examples/screenshots/webgl_loader_md2.jpg and b/examples/screenshots/webgl_loader_md2.jpg differ diff --git a/examples/screenshots/webgl_loader_md2_control.jpg b/examples/screenshots/webgl_loader_md2_control.jpg index 421edc0efde0bd..d05799da089506 100644 Binary files a/examples/screenshots/webgl_loader_md2_control.jpg and b/examples/screenshots/webgl_loader_md2_control.jpg differ diff --git a/examples/screenshots/webgl_loader_ply.jpg b/examples/screenshots/webgl_loader_ply.jpg index dd4c1b5b9abd0d..ca19ff3c7dacd0 100644 Binary files a/examples/screenshots/webgl_loader_ply.jpg and b/examples/screenshots/webgl_loader_ply.jpg differ diff --git a/examples/screenshots/webgl_loader_stl.jpg b/examples/screenshots/webgl_loader_stl.jpg index 9d415462f7e1f7..70a5bd4c373c3e 100644 Binary files a/examples/screenshots/webgl_loader_stl.jpg and b/examples/screenshots/webgl_loader_stl.jpg differ diff --git a/examples/screenshots/webgl_loader_ttf.jpg b/examples/screenshots/webgl_loader_ttf.jpg index e46ec9053911bb..d6319f2b52eab6 100644 Binary files a/examples/screenshots/webgl_loader_ttf.jpg and b/examples/screenshots/webgl_loader_ttf.jpg differ diff --git a/examples/screenshots/webgl_lod.jpg b/examples/screenshots/webgl_lod.jpg index 2f641e9c3001bc..1df4c11d211310 100644 Binary files a/examples/screenshots/webgl_lod.jpg and b/examples/screenshots/webgl_lod.jpg differ diff --git a/examples/screenshots/webgl_materials_car.jpg b/examples/screenshots/webgl_materials_car.jpg index 0c86ddab29353d..cb67bbc178d2d3 100644 Binary files a/examples/screenshots/webgl_materials_car.jpg and b/examples/screenshots/webgl_materials_car.jpg differ diff --git a/examples/screenshots/webgl_materials_texture_anisotropy.jpg b/examples/screenshots/webgl_materials_texture_anisotropy.jpg index 760227bbb6f268..5e2e106e521114 100644 Binary files a/examples/screenshots/webgl_materials_texture_anisotropy.jpg and b/examples/screenshots/webgl_materials_texture_anisotropy.jpg differ diff --git a/examples/screenshots/webgl_materials_texture_filters.jpg b/examples/screenshots/webgl_materials_texture_filters.jpg index 9646e138e9d2d6..75ddcea971e343 100644 Binary files a/examples/screenshots/webgl_materials_texture_filters.jpg and b/examples/screenshots/webgl_materials_texture_filters.jpg differ diff --git a/examples/screenshots/webgl_materials_texture_manualmipmap.jpg b/examples/screenshots/webgl_materials_texture_manualmipmap.jpg index 9126c298c6aaed..e0962945c77cac 100644 Binary files a/examples/screenshots/webgl_materials_texture_manualmipmap.jpg and b/examples/screenshots/webgl_materials_texture_manualmipmap.jpg differ diff --git a/examples/screenshots/webgl_nodes_points.jpg b/examples/screenshots/webgl_nodes_points.jpg index 10f865654c9588..c452f248a35e9f 100644 Binary files a/examples/screenshots/webgl_nodes_points.jpg and b/examples/screenshots/webgl_nodes_points.jpg differ diff --git a/examples/screenshots/webgl_points_billboards.jpg b/examples/screenshots/webgl_points_billboards.jpg index 6010966f0403f5..7a6ef65577f889 100644 Binary files a/examples/screenshots/webgl_points_billboards.jpg and b/examples/screenshots/webgl_points_billboards.jpg differ diff --git a/examples/screenshots/webgl_points_dynamic.jpg b/examples/screenshots/webgl_points_dynamic.jpg index 0a32a094536325..e5dd357a67e36c 100644 Binary files a/examples/screenshots/webgl_points_dynamic.jpg and b/examples/screenshots/webgl_points_dynamic.jpg differ diff --git a/examples/screenshots/webgl_points_sprites.jpg b/examples/screenshots/webgl_points_sprites.jpg index 926d5167e8200e..6d0cdaed41aab1 100644 Binary files a/examples/screenshots/webgl_points_sprites.jpg and b/examples/screenshots/webgl_points_sprites.jpg differ diff --git a/examples/screenshots/webgl_postprocessing.jpg b/examples/screenshots/webgl_postprocessing.jpg index ca61c2374eb82e..2914e6498157c2 100644 Binary files a/examples/screenshots/webgl_postprocessing.jpg and b/examples/screenshots/webgl_postprocessing.jpg differ diff --git a/examples/screenshots/webgl_postprocessing_glitch.jpg b/examples/screenshots/webgl_postprocessing_glitch.jpg index 22a3e770262dcd..c420ea7f48808c 100644 Binary files a/examples/screenshots/webgl_postprocessing_glitch.jpg and b/examples/screenshots/webgl_postprocessing_glitch.jpg differ diff --git a/examples/screenshots/webgl_postprocessing_ssr.jpg b/examples/screenshots/webgl_postprocessing_ssr.jpg index db2d70d73e3ce4..72e9a056b02aae 100644 Binary files a/examples/screenshots/webgl_postprocessing_ssr.jpg and b/examples/screenshots/webgl_postprocessing_ssr.jpg differ diff --git a/examples/screenshots/webgl_shadowmap_performance.jpg b/examples/screenshots/webgl_shadowmap_performance.jpg index 83b810759edd1d..cbabaa17f98cd9 100644 Binary files a/examples/screenshots/webgl_shadowmap_performance.jpg and b/examples/screenshots/webgl_shadowmap_performance.jpg differ diff --git a/examples/screenshots/webgl_shadowmap_vsm.jpg b/examples/screenshots/webgl_shadowmap_vsm.jpg index acd9ca25697458..4d7413ea587c14 100644 Binary files a/examples/screenshots/webgl_shadowmap_vsm.jpg and b/examples/screenshots/webgl_shadowmap_vsm.jpg differ diff --git a/examples/screenshots/webgl_skinning_simple.jpg b/examples/screenshots/webgl_skinning_simple.jpg index 81fbc4b7409dab..35afc570ca36a4 100644 Binary files a/examples/screenshots/webgl_skinning_simple.jpg and b/examples/screenshots/webgl_skinning_simple.jpg differ diff --git a/examples/screenshots/webgl_sprites.jpg b/examples/screenshots/webgl_sprites.jpg index 3faf2abd660980..5743ec6a89385f 100644 Binary files a/examples/screenshots/webgl_sprites.jpg and b/examples/screenshots/webgl_sprites.jpg differ diff --git a/examples/webgl_geometry_terrain_fog_types.html b/examples/webgl_geometry_terrain_fog_types.html new file mode 100644 index 00000000000000..60dbcf57d9ae1a --- /dev/null +++ b/examples/webgl_geometry_terrain_fog_types.html @@ -0,0 +1,292 @@ + + + + three.js webgl - fog types + + + + + + + +
+
three.js - webgl terrain + fog types
+ + + + + + + + + + + diff --git a/src/Three.Legacy.js b/src/Three.Legacy.js index 890b540855776d..9ef60e2f99102c 100644 --- a/src/Three.Legacy.js +++ b/src/Three.Legacy.js @@ -18,6 +18,9 @@ import { TorusGeometry } from './geometries/TorusGeometry.js'; import { TorusKnotGeometry } from './geometries/TorusKnotGeometry.js'; import { TubeGeometry } from './geometries/TubeGeometry.js'; +import { RangeFog } from './scenes/RangeFog.js'; +import { DensityFog } from './scenes/DensityFog.js'; + export class BoxBufferGeometry extends BoxGeometry { // @deprecated, r144 constructor( width, height, depth, widthSegments, heightSegments, depthSegments ) { @@ -227,3 +230,25 @@ export class TubeBufferGeometry extends TubeGeometry { // @deprecated, r144 } } + +export class Fog extends RangeFog { + + constructor( color, near, far ) { + + console.warn( 'THREE.Fog has been renamed to THREE.RangeFog.' ); + super( color, near, far ); + + } + +} + +export class FogExp2 extends DensityFog { + + constructor( color, near ) { + + console.warn( 'THREE.FogExp2 has been deprecated. Use THREE.DensityFog( color, near, true ) instead.' ); + super( color, near, true ); + + } + +} diff --git a/src/Three.js b/src/Three.js index 0773a037ca7b1f..ec698b83e69130 100644 --- a/src/Three.js +++ b/src/Three.js @@ -11,8 +11,8 @@ export { ShaderLib } from './renderers/shaders/ShaderLib.js'; export { UniformsLib } from './renderers/shaders/UniformsLib.js'; export { UniformsUtils } from './renderers/shaders/UniformsUtils.js'; export { ShaderChunk } from './renderers/shaders/ShaderChunk.js'; -export { FogExp2 } from './scenes/FogExp2.js'; -export { Fog } from './scenes/Fog.js'; +export { DensityFog } from './scenes/DensityFog.js'; +export { RangeFog } from './scenes/RangeFog.js'; export { Scene } from './scenes/Scene.js'; export { Sprite } from './objects/Sprite.js'; export { LOD } from './objects/LOD.js'; diff --git a/src/loaders/ObjectLoader.js b/src/loaders/ObjectLoader.js index 5b3b2223d57f65..ad41807aaee6de 100644 --- a/src/loaders/ObjectLoader.js +++ b/src/loaders/ObjectLoader.js @@ -33,8 +33,8 @@ import { SkinnedMesh } from '../objects/SkinnedMesh.js'; import { Bone } from '../objects/Bone.js'; import { Skeleton } from '../objects/Skeleton.js'; import { Shape } from '../extras/core/Shape.js'; -import { Fog } from '../scenes/Fog.js'; -import { FogExp2 } from '../scenes/FogExp2.js'; +import { RangeFog } from '../scenes/RangeFog.js'; +import { DensityFog } from '../scenes/DensityFog.js'; import { HemisphereLight } from '../lights/HemisphereLight.js'; import { SpotLight } from '../lights/SpotLight.js'; import { PointLight } from '../lights/PointLight.js'; @@ -774,13 +774,14 @@ class ObjectLoader extends Loader { if ( data.fog !== undefined ) { - if ( data.fog.type === 'Fog' ) { + if ( data.fog.type === 'RangeFog' || data.fog.type === 'Fog' ) { - object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + object.fog = new RangeFog( data.fog.color, data.fog.near, data.fog.far ); - } else if ( data.fog.type === 'FogExp2' ) { + } else if ( data.fog.type === 'DensityFog' || data.fog.type === 'FogExp2' ) { - object.fog = new FogExp2( data.fog.color, data.fog.density ); + const squared = ( data.fog.type === 'FogExp2' ) || !! data.fog.squared; + object.fog = new DensityFog( data.fog.color, data.fog.density, squared ); } diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 9789e0443acd4d..7e78bdbe92d2e7 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1397,6 +1397,7 @@ class WebGLRenderer { materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null; materialProperties.fog = scene.fog; + materialProperties.fogSquared = ( scene.fog && scene.fog.squared ) || null; materialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment ); if ( programs === undefined ) { @@ -1585,7 +1586,7 @@ class WebGLRenderer { needsProgramChange = true; - } else if ( material.fog === true && materialProperties.fog !== fog ) { + } else if ( material.fog === true && ( materialProperties.fog !== fog || ( fog && ( materialProperties.fogSquared !== fog.squared ) ) ) ) { needsProgramChange = true; diff --git a/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js b/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js index 2b4f28252cd610..7a80f66eef9aee 100644 --- a/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +++ b/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js @@ -2,12 +2,23 @@ export default /* glsl */` #ifdef USE_FOG #ifdef FOG_EXP2 + + vec3 scaledFogPosition = fogDensity * vFogPosition; + float fogFactor = 1.0 - exp( - dot( scaledFogPosition, scaledFogPosition ) ); - float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #endif + + #ifdef FOG_EXP + + float fogDepth = precisionSafeLength( fogDensity * vFogPosition ); + float fogFactor = 1.0 - exp( - fogDepth ); + + #endif - #else + #if ( ( ! defined FOG_EXP ) && ! defined FOG_EXP2 ) - float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + float fogDepth = precisionSafeLength( vFogPosition ); + float fogFactor = smoothstep( fogNear, fogFar, fogDepth ); #endif diff --git a/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js b/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js index faade1fe9b156b..4ba4af23d2651f 100644 --- a/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +++ b/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js @@ -2,9 +2,9 @@ export default /* glsl */` #ifdef USE_FOG uniform vec3 fogColor; - varying float vFogDepth; + varying vec3 vFogPosition; - #ifdef FOG_EXP2 + #if defined( FOG_EXP ) || defined( FOG_EXP2 ) uniform float fogDensity; diff --git a/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js b/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js index 3a7a1929e12ca9..9645be1669b277 100644 --- a/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +++ b/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js @@ -1,7 +1,7 @@ export default /* glsl */` #ifdef USE_FOG - varying float vFogDepth; + varying vec3 vFogPosition; #endif `; diff --git a/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js b/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js index a329811730352d..5d238ea1f4873f 100644 --- a/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +++ b/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js @@ -1,7 +1,8 @@ export default /* glsl */` #ifdef USE_FOG - vFogDepth = - mvPosition.z; + // Use distance for perspective camera, but only depth for orthographic camera: + vFogPosition = vec3( isOrthographic ? vec2(0.) : mvPosition.xy, mvPosition.z ); #endif `; diff --git a/src/renderers/webgl/WebGLMaterials.js b/src/renderers/webgl/WebGLMaterials.js index 00264adefc2ad1..d4c191a4345722 100644 --- a/src/renderers/webgl/WebGLMaterials.js +++ b/src/renderers/webgl/WebGLMaterials.js @@ -19,12 +19,12 @@ function WebGLMaterials( renderer, properties ) { fog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) ); - if ( fog.isFog ) { + if ( fog.isRangeFog ) { uniforms.fogNear.value = fog.near; uniforms.fogFar.value = fog.far; - } else if ( fog.isFogExp2 ) { + } else if ( fog.isDensityFog ) { uniforms.fogDensity.value = fog.density; diff --git a/src/renderers/webgl/WebGLProgram.js b/src/renderers/webgl/WebGLProgram.js index 09fe5c7135d697..e97bf457ebfd41 100644 --- a/src/renderers/webgl/WebGLProgram.js +++ b/src/renderers/webgl/WebGLProgram.js @@ -455,6 +455,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '', parameters.useFog && parameters.fog ? '#define USE_FOG' : '', + parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP' : '', parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', @@ -639,6 +640,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { customDefines, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', + parameters.useFog && parameters.fogExp ? '#define FOG_EXP' : '', parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', diff --git a/src/renderers/webgl/WebGLPrograms.js b/src/renderers/webgl/WebGLPrograms.js index 4f6fab8ef698b0..492608cd596fd3 100644 --- a/src/renderers/webgl/WebGLPrograms.js +++ b/src/renderers/webgl/WebGLPrograms.js @@ -269,7 +269,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities fog: !! fog, useFog: material.fog === true, - fogExp2: ( fog && fog.isFogExp2 ), + fogExp: ( ( !! fog ) && fog.isDensityFog && ! fog.squared ), + fogExp2: ( ( !! fog ) && fog.isDensityFog && fog.squared ), flatShading: material.flatShading === true, @@ -403,6 +404,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities array.push( parameters.transmissionMapUv ); array.push( parameters.thicknessMapUv ); array.push( parameters.combine ); + array.push( parameters.fogExp ); array.push( parameters.fogExp2 ); array.push( parameters.sizeAttenuation ); array.push( parameters.morphTargetsCount ); diff --git a/src/scenes/DensityFog.js b/src/scenes/DensityFog.js new file mode 100644 index 00000000000000..3861ca221c20e2 --- /dev/null +++ b/src/scenes/DensityFog.js @@ -0,0 +1,37 @@ +import { Color } from '../math/Color.js'; + +class DensityFog { + + constructor( color, density = 0.00025, squared = true ) { + + this.isDensityFog = true; + + this.name = ''; + + this.color = new Color( color ); + this.density = density; + + this.squared = squared; + + } + + clone() { + + return new DensityFog( this.color, this.density, this.squared ); + + } + + toJSON( /* meta */ ) { + + return { + type: 'DensityFog', + color: this.color.getHex(), + density: this.density, + squared: !! this.squared + }; + + } + +} + +export { DensityFog }; diff --git a/src/scenes/FogExp2.js b/src/scenes/FogExp2.js deleted file mode 100644 index 3f60d0881e25c9..00000000000000 --- a/src/scenes/FogExp2.js +++ /dev/null @@ -1,34 +0,0 @@ -import { Color } from '../math/Color.js'; - -class FogExp2 { - - constructor( color, density = 0.00025 ) { - - this.isFogExp2 = true; - - this.name = ''; - - this.color = new Color( color ); - this.density = density; - - } - - clone() { - - return new FogExp2( this.color, this.density ); - - } - - toJSON( /* meta */ ) { - - return { - type: 'FogExp2', - color: this.color.getHex(), - density: this.density - }; - - } - -} - -export { FogExp2 }; diff --git a/src/scenes/Fog.js b/src/scenes/RangeFog.js similarity index 69% rename from src/scenes/Fog.js rename to src/scenes/RangeFog.js index 03b89c71d824ae..71eb70b76f706f 100644 --- a/src/scenes/Fog.js +++ b/src/scenes/RangeFog.js @@ -1,10 +1,10 @@ import { Color } from '../math/Color.js'; -class Fog { +class RangeFog { constructor( color, near = 1, far = 1000 ) { - this.isFog = true; + this.isRangeFog = true; this.name = ''; @@ -17,14 +17,14 @@ class Fog { clone() { - return new Fog( this.color, this.near, this.far ); + return new RangeFog( this.color, this.near, this.far ); } toJSON( /* meta */ ) { return { - type: 'Fog', + type: 'RangeFog', color: this.color.getHex(), near: this.near, far: this.far @@ -34,4 +34,4 @@ class Fog { } -export { Fog }; +export { RangeFog }; diff --git a/test/unit/src/scenes/DensityFog.tests.js b/test/unit/src/scenes/DensityFog.tests.js new file mode 100644 index 00000000000000..d9e3d7262543f0 --- /dev/null +++ b/test/unit/src/scenes/DensityFog.tests.js @@ -0,0 +1,82 @@ +/* global QUnit */ + +import { DensityFog } from '../../../../src/scenes/DensityFog.js'; + +export default QUnit.module( 'Scenes', () => { + + QUnit.module( 'FoxExp2', () => { + + // INSTANCING + QUnit.test( 'Instancing', ( assert ) => { + + // FoxExp2( color, density = 0.00025 ) + + // no params + const object = new DensityFog(); + assert.ok( object, 'Can instantiate a DensityFog.' ); + + // color + const object_color = new DensityFog( 0xffffff ); + assert.ok( object_color, 'Can instantiate a DensityFog with color.' ); + + // color, density + const object_color_density = new DensityFog( 0xffffff, 0.00030 ); + assert.ok( object_color_density, 'Can instantiate a DensityFog with color, density.' ); + + // color, density, squared + const object_all = new DensityFog( 0xffffff, 0.00030, false ); + assert.ok( object_all, 'Can instantiate a DensityFog with color, density, squared == false.' ); + + } ); + + // PROPERTIES + QUnit.todo( 'name', ( assert ) => { + + assert.ok( false, 'everything\'s gonna be alright' ); + + } ); + + QUnit.todo( 'color', ( assert ) => { + + assert.ok( false, 'everything\'s gonna be alright' ); + + } ); + + QUnit.todo( 'density', ( assert ) => { + + assert.ok( false, 'everything\'s gonna be alright' ); + + } ); + + QUnit.todo( 'squared', ( assert ) => { + + assert.ok( false, 'everything\'s gonna be alright' ); + + } ); + + // PUBLIC STUFF + QUnit.test( 'isDensityFog', ( assert ) => { + + const object = new DensityFog(); + assert.ok( + object.isDensityFog, + 'DensityFog.isDensityFog should be true' + ); + + } ); + + QUnit.todo( 'clone', ( assert ) => { + + assert.ok( false, 'everything\'s gonna be alright' ); + + } ); + + QUnit.todo( 'toJSON', ( assert ) => { + + assert.ok( false, 'everything\'s gonna be alright' ); + + } ); + + } ); + +} ); diff --git a/test/unit/src/scenes/FogExp2.tests.js b/test/unit/src/scenes/FogExp2.tests.js deleted file mode 100644 index 0caf0de7d0e703..00000000000000 --- a/test/unit/src/scenes/FogExp2.tests.js +++ /dev/null @@ -1,72 +0,0 @@ -/* global QUnit */ - -import { FogExp2 } from '../../../../src/scenes/FogExp2.js'; - -export default QUnit.module( 'Scenes', () => { - - QUnit.module( 'FoxExp2', () => { - - // INSTANCING - QUnit.test( 'Instancing', ( assert ) => { - - // FoxExp2( color, density = 0.00025 ) - - // no params - const object = new FogExp2(); - assert.ok( object, 'Can instantiate a FogExp2.' ); - - // color - const object_color = new FogExp2( 0xffffff ); - assert.ok( object_color, 'Can instantiate a FogExp2 with color.' ); - - // color, density - const object_all = new FogExp2( 0xffffff, 0.00030 ); - assert.ok( object_all, 'Can instantiate a FogExp2 with color, density.' ); - - } ); - - // PROPERTIES - QUnit.todo( 'name', ( assert ) => { - - assert.ok( false, 'everything\'s gonna be alright' ); - - } ); - - QUnit.todo( 'color', ( assert ) => { - - assert.ok( false, 'everything\'s gonna be alright' ); - - } ); - - QUnit.todo( 'density', ( assert ) => { - - assert.ok( false, 'everything\'s gonna be alright' ); - - } ); - - // PUBLIC STUFF - QUnit.test( 'isFogExp2', ( assert ) => { - - const object = new FogExp2(); - assert.ok( - object.isFogExp2, - 'FogExp2.isFogExp2 should be true' - ); - - } ); - - QUnit.todo( 'clone', ( assert ) => { - - assert.ok( false, 'everything\'s gonna be alright' ); - - } ); - - QUnit.todo( 'toJSON', ( assert ) => { - - assert.ok( false, 'everything\'s gonna be alright' ); - - } ); - - } ); - -} ); diff --git a/test/unit/src/scenes/Fog.tests.js b/test/unit/src/scenes/RangeFog.tests.js similarity index 58% rename from test/unit/src/scenes/Fog.tests.js rename to test/unit/src/scenes/RangeFog.tests.js index 1540f82ecaf89c..b7668f3df8274c 100644 --- a/test/unit/src/scenes/Fog.tests.js +++ b/test/unit/src/scenes/RangeFog.tests.js @@ -1,27 +1,27 @@ /* global QUnit */ -import { Fog } from '../../../../src/scenes/Fog.js'; +import { RangeFog } from '../../../../src/scenes/RangeFog.js'; export default QUnit.module( 'Scenes', () => { - QUnit.module( 'Fog', () => { + QUnit.module( 'RangeFog', () => { // INSTANCING QUnit.test( 'Instancing', ( assert ) => { - // Fog( color, near = 1, far = 1000 ) + // RangeFog( color, near = 1, far = 1000 ) // no params - const object = new Fog(); - assert.ok( object, 'Can instantiate a Fog.' ); + const object = new RangeFog(); + assert.ok( object, 'Can instantiate a RangeFog.' ); // color - const object_color = new Fog( 0xffffff ); - assert.ok( object_color, 'Can instantiate a Fog with color.' ); + const object_color = new RangeFog( 0xffffff ); + assert.ok( object_color, 'Can instantiate a RangeFog with color.' ); // color, near, far - const object_all = new Fog( 0xffffff, 0.015, 100 ); - assert.ok( object_all, 'Can instantiate a Fog with color, near, far.' ); + const object_all = new RangeFog( 0xffffff, 0.015, 100 ); + assert.ok( object_all, 'Can instantiate a RangeFog with color, near, far.' ); } ); @@ -51,12 +51,12 @@ export default QUnit.module( 'Scenes', () => { } ); // PUBLIC - QUnit.test( 'isFog', ( assert ) => { + QUnit.test( 'isRangeFog', ( assert ) => { - const object = new Fog(); + const object = new RangeFog(); assert.ok( - object.isFog, - 'Fog.isFog should be true' + object.isRangeFog, + 'RangeFog.isRangeFog should be true' ); } ); diff --git a/test/unit/three.source.unit.js b/test/unit/three.source.unit.js index d70a237838cc69..317a8cb47dc955 100644 --- a/test/unit/three.source.unit.js +++ b/test/unit/three.source.unit.js @@ -270,8 +270,8 @@ import './src/renderers/webgl/WebGLUtils.tests.js'; //src/scenes -import './src/scenes/Fog.tests.js'; -import './src/scenes/FogExp2.tests.js'; +import './src/scenes/RangeFog.tests.js'; +import './src/scenes/DensityFog.tests.js'; import './src/scenes/Scene.tests.js';