Переглянути джерело

Editor: Add option for shadow type configuration.

Mugen87 5 роки тому
батько
коміт
59770d42bd
3 змінених файлів з 28 додано та 2 видалено
  1. 1 0
      editor/js/Config.js
  2. 25 2
      editor/js/Sidebar.Project.js
  3. 2 0
      editor/js/Strings.js

+ 1 - 0
editor/js/Config.js

@@ -16,6 +16,7 @@ var Config = function () {
 
 		'project/renderer/antialias': true,
 		'project/renderer/shadows': true,
+		'project/renderer/shadowType': 1, // PCF
 		'project/renderer/physicallyCorrectLights': false,
 		'project/renderer/toneMapping': 1, // linear
 		'project/renderer/toneMappingExposure': 1,

+ 25 - 2
editor/js/Sidebar.Project.js

@@ -93,6 +93,27 @@ var SidebarProject = function ( editor ) {
 
 	rendererPanel.add( shadowsRow );
 
+	// Renderer / Shadow Type
+
+	var shadowTypeRow = new UIRow();
+	var shadowTypeSelect = new UISelect().setOptions( {
+		0: 'Basic',
+		1: 'PCF',
+		2: 'PCF (Soft)',
+	//	3: 'VSM'
+	} ).setWidth( '150px' ).onChange( function () {
+
+		config.setKey( 'project/renderer/shadowType', this.getValue() );
+		updateRenderer();
+
+	} );
+	shadowTypeSelect.setValue( config.getKey( 'project/renderer/shadowType' ) );
+
+	shadowTypeRow.add( new UIText( strings.getKey( 'sidebar/project/shadowType' ) ).setWidth( '90px' ) );
+	shadowTypeRow.add( shadowTypeSelect );
+
+	rendererPanel.add( shadowTypeRow );
+
 	// Renderer / Physically Correct lights
 
 	var physicallyCorrectLightsRow = new UIRow();
@@ -166,13 +187,14 @@ var SidebarProject = function ( editor ) {
 		createRenderer(
 			antialiasBoolean.getValue(),
 			shadowsBoolean.getValue(),
+			shadowTypeSelect.getValue(),
 			toneMappingSelect.getValue(),
 			physicallyCorrectLightsBoolean.getValue()
 		);
 
 	}
 
-	function createRenderer( antialias, shadows, toneMapping, physicallyCorrectLights ) {
+	function createRenderer( antialias, shadows, shadowType, toneMapping, physicallyCorrectLights ) {
 
 		var parameters = { antialias: antialias };
 
@@ -191,7 +213,7 @@ var SidebarProject = function ( editor ) {
 		if ( shadows ) {
 
 			currentRenderer.shadowMap.enabled = true;
-			// renderer.shadowMap.type = THREE.PCFSoftShadowMap;
+			currentRenderer.shadowMap.type = parseFloat( shadowType );
 
 		}
 
@@ -214,6 +236,7 @@ var SidebarProject = function ( editor ) {
 	createRenderer(
 		config.getKey( 'project/renderer/antialias' ),
 		config.getKey( 'project/renderer/shadows' ),
+		config.getKey( 'project/renderer/shadowType' ),
 		config.getKey( 'project/renderer/toneMapping' ),
 		config.getKey( 'project/renderer/physicallyCorrectLights' )
 	 );

+ 2 - 0
editor/js/Strings.js

@@ -285,6 +285,7 @@ var Strings = function ( config ) {
 			'sidebar/project/renderer': 'Renderer',
 			'sidebar/project/antialias': 'Antialias',
 			'sidebar/project/shadows': 'Shadows',
+			'sidebar/project/shadowType': 'Shadow Type',
 			'sidebar/project/physicallyCorrectLights': 'Physically correct lights',
 			'sidebar/project/toneMapping': 'Tone mapping',
 			'sidebar/project/toneMappingExposure': 'Exposure',
@@ -569,6 +570,7 @@ var Strings = function ( config ) {
 			'sidebar/project/renderer': '渲染器',
 			'sidebar/project/antialias': '抗锯齿',
 			'sidebar/project/shadows': '阴影',
+			'sidebar/project/shadowType': 'Shadow Type',
 			'sidebar/project/physicallyCorrectLights': '物理光照',
 			'sidebar/project/toneMapping': '色调映射',
 			'sidebar/project/toneMappingExposure': '曝光',