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

Fixed spotlight calculation in default shaders, added all default shaders as default materials, added spotlight visualizer to the entity editor, fixed some light prop sheet values

Ivan Safrin 12 роки тому
батько
коміт
722a6bc095

BIN
Assets/Default asset pack/default.pak


+ 1 - 1
Assets/Default asset pack/default/DefaultParticleShader.frag

@@ -48,7 +48,7 @@ void spotLight(in int i, in vec3 normal, in vec4 pos, inout vec4 diffuse) {
 	vec3 v = -pos.xyz;
 	v = normalize(v);
 
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-normalize(gl_LightSource[i].spotDirection), sn.xyz);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 1 - 1
Assets/Default asset pack/default/DefaultShader.frag

@@ -61,7 +61,7 @@ void spotLight(in int i, in vec3 normal, in vec4 pos, inout vec4 diffuse, inout
 	vec3 v = -pos.xyz;
 	v = normalize(v);
 
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-normalize(gl_LightSource[i].spotDirection), sn.xyz);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 1 - 1
Assets/Default asset pack/default/DefaultShaderNoTexture.frag

@@ -60,7 +60,7 @@ void spotLight(in int i, in vec3 normal, in vec4 pos, inout vec4 diffuse, inout
 	vec3 v = -pos.xyz;
 	v = normalize(v);
 
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-normalize(gl_LightSource[i].spotDirection), sn.xyz);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 1 - 1
Assets/Default asset pack/default/DefaultShaderShadows.frag

@@ -78,7 +78,7 @@ void spotLight(in int i, in vec3 normal, in vec4 pos, inout vec4 diffuse, inout
 	vec3 v = -pos.xyz;
 	v = normalize(v);
 
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-normalize(gl_LightSource[i].spotDirection), sn.xyz);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 1 - 1
Assets/Default asset pack/default/DefaultShaderVertex.vert

@@ -56,7 +56,7 @@ void spotLight(in int i, in vec3 normal, in vec4 pos, inout vec4 diffuse, inout
 	vec3 v = -pos.xyz;
 	v = normalize(v);
 
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-normalize(gl_LightSource[i].spotDirection), sn.xyz);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 1 - 1
Assets/Default asset pack/default/NorColSpec.frag

@@ -89,7 +89,7 @@ void spotLight(in int i, in vec3 bump, in vec3 normal, in vec3 tangent, in vec3
 	lDir = normalize(lDir);
 
 	
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-lDir, lVec);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 50 - 2
Assets/Default asset pack/default/default.mat

@@ -43,6 +43,18 @@
 		</shader>	
 	</shaders>	
 	<materials>
+		<material name="DefaultVertex">
+			<shader name="DefaultShaderVertexNoTexture">
+			</shader>
+		</material>		
+		<material name="DefaultVertexTextured">
+			<shader name="DefaultShaderVertex">
+			</shader>
+		</material>
+		<material name="DefaultVertexTexturedAdditive" blendingMode="2">
+			<shader name="DefaultShaderVertex">
+			</shader>
+		</material>						
 		<material name="Default">
 			<shader name="DefaultShaderNoTexture">
 			</shader>
@@ -53,11 +65,47 @@
 				</textures>				
 			</shader>
 		</material>
-		<material name="UnlitMaterial">
+		<material name="DefaultTexturedAdditive" blendingMode="2">
+			<shader name="DefaultShader">
+				<textures>
+				</textures>				
+			</shader>
+		</material>		
+		<material name="Unlit">
 			<shader name="Unlit">
 				<textures>
 				</textures>				
 			</shader>
-		</material>							
+		</material>
+		<material name="DefaultWithShadows">
+			<shader name="DefaultShaderShadows">
+				<textures>
+				</textures>				
+			</shader>
+		</material>
+		<material name="Particles">
+			<shader name="DefaultParticleShader">
+				<textures>
+				</textures>				
+			</shader>
+		</material>
+		<material name="ParticlesAdditive" blendingMode="2">
+			<shader name="DefaultParticleShader">
+				<textures>
+				</textures>				
+			</shader>
+		</material>
+		<material name="LightCube">
+			<shader name="LightCube">
+				<textures>
+				</textures>				
+			</shader>
+		</material>
+		<material name="NormalColorSpecular">
+			<shader name="NorColSpec">
+				<textures>
+				</textures>				
+			</shader>
+		</material>		
 	</materials>
 </polycode>

BIN
Assets/Default asset pack/hdr.pak


+ 1 - 1
Assets/Default asset pack/hdr/DefaultShaderNoTextureHDR.frag

@@ -60,7 +60,7 @@ void spotLight(in int i, in vec3 normal, in vec4 pos, inout vec4 diffuse, inout
 	vec3 v = -pos.xyz;
 	v = normalize(v);
 
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-normalize(gl_LightSource[i].spotDirection), sn.xyz);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 1 - 1
Assets/Default asset pack/hdr/NorColSpecHDR.frag

@@ -89,7 +89,7 @@ void spotLight(in int i, in vec3 bump, in vec3 normal, in vec3 tangent, in vec3
 	lDir = normalize(lDir);
 
 	
-	float cos_outer_cone_angle = gl_LightSource[i].spotExponent;
+	float cos_outer_cone_angle = (1.0-gl_LightSource[i].spotExponent) * gl_LightSource[i].spotCosCutoff;
 	float cos_cur_angle = dot(-lDir, lVec);
 	float cos_inner_cone_angle = gl_LightSource[i].spotCosCutoff;
 

+ 6 - 2
Assets/Default asset pack/hdr/hdr.mat

@@ -31,10 +31,14 @@
 		</shader>							
 	</shaders>
 	<materials>
-		<material name="DefaultHDR" screen="true">
+		<material name="DefaultHDR">
 			<shader name="DefaultShaderNoTextureHDR">
 			</shader>
-		</material>				
+		</material>
+			<material name="NormalColorSpecularHDR">
+			<shader name="NorColSpecHDR">
+			</shader>
+		</material>									
 		<material name="HDRProcess" screen="true">
 			<shader name="HDRProcessShader">
 			</shader>

+ 3 - 5
Core/Contents/Include/PolySceneLight.h

@@ -41,7 +41,7 @@ namespace Polycode {
 		
 			/**
 			* Constructs a light with parameters.
-			* @param type Type of light to create. Can be SceneLight::AREA_LIGHT or SceneLight::SPOT_LIGHT
+			* @param type Type of light to create. Can be SceneLight::POINT_LIGHT or SceneLight::SPOT_LIGHT
 			* @param parentScene Scene to light.
 			* @param intensity Light color intensity
 			* @param constantAttenuation Constant falloff attenuation value	
@@ -86,7 +86,7 @@ namespace Polycode {
 
 			const Matrix4& getLightViewMatrix() const;
 			
-			static const int AREA_LIGHT = 0;
+			static const int POINT_LIGHT = 0;
 			static const int SPOT_LIGHT = 1;
 			
 			Texture *getZBufferTexture() const;
@@ -144,13 +144,11 @@ namespace Polycode {
 			*/
 			void setSpotlightProperties(Number spotlightCutoff, Number spotlightExponent) {
 				this->spotlightCutoff = spotlightCutoff;
-				Number cosVal = cos(spotlightCutoff*(PI/180.0));
-				this->spotlightExponent = cosVal - (0.02*spotlightExponent);				
+                this->spotlightExponent = spotlightExponent;
 			}
 			
 			Number getSpotlightCutoff() const { return spotlightCutoff; }
 			Number getSpotlightExponent() const { return spotlightExponent; }
-						
 			
 			/**
 			* If this is called with 'true', the light will generate a shadow map.

+ 15 - 1
IDE/Contents/Include/PolycodeEntityEditor.h

@@ -35,17 +35,31 @@
 
 using namespace Polycode;
 
+class LightDisplay : public Entity {
+public:
+    LightDisplay(SceneLight *light);
+    ~LightDisplay();
+    void Update();
+    
+private:
+    ScenePrimitive *spotSpot;
+    SceneMesh *fovSceneMesh;    
+    Mesh *fovMesh;
+    
+    SceneLight *light;
+};
+
 class CameraDisplay : public Entity {
     public:
         CameraDisplay(Camera *camera);
         ~CameraDisplay();
         void Update();
     
+    
     private:
         SceneMesh *fovSceneMesh;
         Mesh *fovMesh;
         Camera *camera;
-    
 };
 
 class CameraPreviewWindow : public UIElement {

+ 3 - 1
IDE/Contents/Include/PolycodeProps.h

@@ -597,6 +597,8 @@ class SceneLightSheet : public PropSheet {
         SceneLightSheet();
         ~SceneLightSheet();
     
+        void updateOptionVisibility();
+    
         void setSceneLight(SceneLight *light);
         void handleEvent(Event *event);
     
@@ -612,7 +614,7 @@ class SceneLightSheet : public PropSheet {
         SliderProp *linearAttenuationProp;
         SliderProp *quadraticAttenuationProp;
     
-        NumberProp *spotlightCutoffProp;
+        SliderProp *spotlightCutoffProp;
         SliderProp *spotlightExponentProp;
     
         BoolProp *castShadowsProp;

+ 66 - 15
IDE/Contents/Source/PolycodeEntityEditor.cpp

@@ -27,6 +27,65 @@ extern UIGlobalMenu *globalMenu;
 extern PolycodeFrame *globalFrame;
 extern Scene *globalScene;
 
+LightDisplay::LightDisplay(SceneLight *light) {
+    this->light = light;
+    spotSpot = new ScenePrimitive(ScenePrimitive::TYPE_LINE_CIRCLE, 1.0, 1.0, 32);
+	spotSpot->getMesh()->setMeshType(Mesh::LINE_LOOP_MESH);
+    addChild(spotSpot);
+    spotSpot->setColor(1.0, 0.8, 0.0, 1.0);
+    spotSpot->enabled = false;
+    
+    fovSceneMesh = new SceneMesh(Mesh::LINE_MESH);
+    fovSceneMesh->setColor(1.0, 0.8, 0.0, 1.0);
+    fovMesh = fovSceneMesh->getMesh();
+    fovMesh->indexedMesh = true;
+    addChild(fovSceneMesh);
+    
+    fovMesh->addVertex(0.0, 0.0, 0.0);
+    
+    fovMesh->addVertex(-1.0, 1.0, -1.0);
+    fovMesh->addVertex(1.0, 1.0, -1.0);
+    fovMesh->addVertex(1.0, -1.0, -1.0);
+    fovMesh->addVertex(-1.0, -1.0, -1.0);
+    
+    fovMesh->addIndexedFace(0, 1);
+    fovMesh->addIndexedFace(0, 2);
+    fovMesh->addIndexedFace(0, 3);
+    fovMesh->addIndexedFace(0, 4);
+    
+    
+    light->addChild(this);
+}
+
+LightDisplay::~LightDisplay() {
+    
+}
+
+void LightDisplay::Update() {
+    if(light->getLightType() == SceneLight::SPOT_LIGHT) {
+        spotSpot->enabled = true;
+        fovSceneMesh->enabled = true;
+        Number distance = light->getIntensity() * 2.0;
+        Number spotAngle = ((light->getSpotlightCutoff()) * 2.0);
+        Number spotLightSize = ((PI * 2.0) * distance * spotAngle) / 360.0;
+        
+        spotSpot->setPosition(0.0, 0.0, -distance);
+        spotSpot->setPrimitiveOptions(ScenePrimitive::TYPE_LINE_CIRCLE, spotLightSize, spotLightSize, 32);
+       	spotSpot->getMesh()->setMeshType(Mesh::LINE_LOOP_MESH);
+        
+        spotLightSize *= 0.5;
+        fovMesh->getActualVertex(1)->set(sin(PI/2.0)*spotLightSize, cos(PI/2.0)*spotLightSize, -distance);
+        fovMesh->getActualVertex(2)->set(sin(PI)*spotLightSize, cos(PI)*spotLightSize, -distance);
+        fovMesh->getActualVertex(3)->set(sin(PI + (PI/2.0))*spotLightSize, cos(PI + (PI/2.0))*spotLightSize, -distance);
+        fovMesh->getActualVertex(4)->set(sin(PI*2.0)*spotLightSize, cos(PI*2.0)*spotLightSize, -distance);
+         fovMesh->dirtyArray(RenderDataArray::VERTEX_DATA_ARRAY);
+    } else {
+        spotSpot->enabled = false;
+        fovSceneMesh->enabled = false;
+    }
+}
+
+
 CameraDisplay::CameraDisplay(Camera *camera) : Entity() {
     
     editorOnly = true;
@@ -42,9 +101,6 @@ CameraDisplay::CameraDisplay(Camera *camera) : Entity() {
     fovMesh->addVertex(1.0, 1.0, -1.0);
     fovMesh->addVertex(1.0, -1.0, -1.0);
     fovMesh->addVertex(-1.0, -1.0, -1.0);
-
-//    fovMesh->addVertex(0.0, 0.0, 0.0);
-//    fovMesh->addVertex(0.0, 0.0, 2.0);
     
     fovMesh->addIndexedFace(0, 1);
     fovMesh->addIndexedFace(0, 2);
@@ -56,8 +112,6 @@ CameraDisplay::CameraDisplay(Camera *camera) : Entity() {
     fovMesh->addIndexedFace(3, 4);
     fovMesh->addIndexedFace(4, 1);
     
-//    fovMesh->addIndexedFace(5, 6);
-    
     addChild(fovSceneMesh);
     
     camera->addChild(this);
@@ -108,11 +162,6 @@ void CameraDisplay::Update() {
         fovMesh->getActualVertex(4)->set(-xPos, -yPos, zPos);
         fovMesh->dirtyArray(RenderDataArray::VERTEX_DATA_ARRAY);
     }
-    
-/*
-    fovMesh->getActualVertex(5)->set(0.0, 0.0, camera->getNearClipppingPlane());
-    fovMesh->getActualVertex(6)->set(0.0, 0.0, camera->getFarClipppingPlane());
- */
 }
 
 CameraPreviewWindow::CameraPreviewWindow() : UIElement() {
@@ -266,7 +315,7 @@ void EntityEditorMainView::Update() {
 void EntityEditorMainView::createIcon(Entity *entity, String iconFile) {
     ScenePrimitive *iconPrimitive = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.4, 0.4);
     
-    iconPrimitive->setMaterialByName("UnlitMaterial");
+    iconPrimitive->setMaterialByName("Unlit");
 	Texture *tex = CoreServices::getInstance()->getMaterialManager()->createTextureFromFile("entityEditor/"+iconFile);
 	if(iconPrimitive->getLocalShaderOptions()) {
         iconPrimitive->getLocalShaderOptions()->addTexture("diffuse", tex);
@@ -297,6 +346,7 @@ void EntityEditorMainView::setEditorProps(Entity *entity) {
     SceneLight *sceneLight = dynamic_cast<SceneLight*>(entity);
     if(sceneLight) {
         createIcon(entity, "light_icon.png");
+        LightDisplay *lightVis = new LightDisplay(sceneLight);
     }
     
     if(emitter) {
@@ -310,10 +360,11 @@ void EntityEditorMainView::setEditorProps(Entity *entity) {
 
     Camera *camera = dynamic_cast<Camera*>(entity);
     if(camera) {
-        
         CameraDisplay *camVis = new CameraDisplay(camera);
         createIcon(entity, "camera_icon.png");
     }
+    
+    
 }
 
 void EntityEditorMainView::addEntityFromMenu(String command) {
@@ -401,7 +452,7 @@ void EntityEditorMainView::addEntityFromMenu(String command) {
 
     
     if(command == "add_light") {
-        SceneLight *newLight = new SceneLight(SceneLight::AREA_LIGHT, mainScene, 1.0);
+        SceneLight *newLight = new SceneLight(SceneLight::POINT_LIGHT, mainScene, 1.0);
         newLight->bBox = Vector3(0.5, 0.5, 0.5);
         mainScene->addLight(newLight);
         sceneObjectRoot->addChild(newLight);
@@ -468,7 +519,7 @@ void EntityEditorMainView::handleEvent(Event *event) {
                 selectEntity(newMesh);
             } else if(assetSelectType == "image") {
                 SceneImage *newImage = new SceneImage(globalFrame->assetBrowser->getFullSelectedAssetPath());
-                newImage->setMaterialByName("UnlitMaterial");
+                newImage->setMaterialByName("Unlit");
                 if(newImage->getLocalShaderOptions()) {
                     newImage->getLocalShaderOptions()->addTexture("diffuse", newImage->getTexture());
                 }
@@ -483,7 +534,7 @@ void EntityEditorMainView::handleEvent(Event *event) {
                 newSprite->playAnimation(newSprite->getAnimationAtIndex(0)->name, 0, false);
             }
             
-            newSprite->setMaterialByName("UnlitMaterial");
+            newSprite->setMaterialByName("Unlit");
             if(newSprite->getLocalShaderOptions()) {
                 newSprite->getLocalShaderOptions()->addTexture("diffuse", newSprite->getTexture());
             }

+ 4 - 4
IDE/Contents/Source/PolycodeMaterialEditor.cpp

@@ -540,11 +540,11 @@ PostPreviewBox::PostPreviewBox() : UIElement() {
 	previewScene->clearColor.setColor(0.0, 0.0, 0.0, 1.0);	
 	previewScene->ambientColor.setColor(0.0, 0.0, 0.0, 1.0);
 
-	mainLight = new SceneLight(SceneLight::AREA_LIGHT, previewScene, 90.0);
+	mainLight = new SceneLight(SceneLight::POINT_LIGHT, previewScene, 90.0);
 	mainLight->setPosition(-6,6,6);
 	previewScene->addLight(mainLight);
 
-	secondLight = new SceneLight(SceneLight::AREA_LIGHT, previewScene, 90.0);
+	secondLight = new SceneLight(SceneLight::POINT_LIGHT, previewScene, 90.0);
 	secondLight->setPosition(6,-6,6);
 	previewScene->addLight(secondLight);
 
@@ -724,11 +724,11 @@ MaterialPreviewBox::MaterialPreviewBox() : UIElement() {
 	previewPrimitive->getMesh()->calculateTangents();	
 
 	
-	mainLight = new SceneLight(SceneLight::AREA_LIGHT, previewScene, 290.0);
+	mainLight = new SceneLight(SceneLight::POINT_LIGHT, previewScene, 290.0);
 	mainLight->setPosition(-10,10,10);
 	previewScene->addLight(mainLight);
 
-	secondLight = new SceneLight(SceneLight::AREA_LIGHT, previewScene, 250.0);
+	secondLight = new SceneLight(SceneLight::POINT_LIGHT, previewScene, 250.0);
 	secondLight->setPosition(10,-10,10);
 	previewScene->addLight(secondLight);
 

+ 2 - 2
IDE/Contents/Source/PolycodeMeshEditor.cpp

@@ -34,11 +34,11 @@ PolycodeMeshEditor::PolycodeMeshEditor() : PolycodeEditor(true){
 	
 //	previewScene->ambientColor.setColor(0.0, 0.0, 0.0, 1.0);
 				
-	mainLight = new SceneLight(SceneLight::AREA_LIGHT, previewScene, 1590.0);
+	mainLight = new SceneLight(SceneLight::POINT_LIGHT, previewScene, 1590.0);
 	mainLight->setPosition(-10,10,10);
 	previewScene->addLight(mainLight);
 
-	secondLight = new SceneLight(SceneLight::AREA_LIGHT, previewScene, 1590.0);
+	secondLight = new SceneLight(SceneLight::POINT_LIGHT, previewScene, 1590.0);
 	secondLight->setPosition(10,-10,10);
 	previewScene->addLight(secondLight);
 

+ 34 - 4
IDE/Contents/Source/PolycodeProps.cpp

@@ -308,7 +308,7 @@ void PropSheet::layoutProps() {
     Number newPropHeight = yOffset + contents->getPosition().y;
     if(newPropHeight != propHeight) {
         propHeight = newPropHeight;
-        dispatchEvent(new Event(), Event::COMPLETE_EVENT);	
+        dispatchEvent(new Event(), Event::COMPLETE_EVENT);
     }
 
 }
@@ -2360,7 +2360,7 @@ void ParticleEmitterSheet::setParticleEmitter(SceneParticleEmitter *emitter) {
 
 SceneLightSheet::SceneLightSheet() : PropSheet("LIGHT", "scene_light") {
     typeProp = new ComboProp("Type");
-    typeProp->comboEntry->addComboItem("Area");
+    typeProp->comboEntry->addComboItem("Point");
     typeProp->comboEntry->addComboItem("Spot");
     addProp(typeProp);
     
@@ -2382,10 +2382,10 @@ SceneLightSheet::SceneLightSheet() : PropSheet("LIGHT", "scene_light") {
     quadraticAttenuationProp = new SliderProp("Quadratic att.", 0.0, 1.0);
     addProp(quadraticAttenuationProp);
     
-    spotlightCutoffProp = new NumberProp("Spot cutoff");
+    spotlightCutoffProp = new SliderProp("Spot angle", 0.0, 90.0);
     addProp(spotlightCutoffProp);
     
-    spotlightExponentProp = new SliderProp("Spot exponent", 0.0, 50.0);
+    spotlightExponentProp = new SliderProp("Spot softness", 0.0, 1.0);
     addProp(spotlightExponentProp);
     
     castShadowsProp = new BoolProp("Cast shadows");
@@ -2406,6 +2406,33 @@ SceneLightSheet::~SceneLightSheet() {
     
 }
 
+void SceneLightSheet::updateOptionVisibility() {
+    if(!light) {
+        return;
+    }
+    
+    if(light->getLightType() == SceneLight::POINT_LIGHT) {
+        spotlightCutoffProp->enabled = false;
+        spotlightExponentProp->enabled = false;
+        castShadowsProp->enabled = false;
+        shadowMapFOVProp->enabled = false;
+        shadowResolutionProp->enabled = false;
+    } else {
+        spotlightCutoffProp->enabled = true;
+        spotlightExponentProp->enabled = true;
+        castShadowsProp->enabled = true;
+        if(light->areShadowsEnabled()) {
+            shadowMapFOVProp->enabled = true;
+            shadowResolutionProp->enabled = true;
+        } else {
+            shadowMapFOVProp->enabled = false;
+            shadowResolutionProp->enabled = false;
+        }
+    }
+    
+    layoutProps();
+}
+
 void SceneLightSheet::setSceneLight(SceneLight *light) {
     this->light = light;
     
@@ -2426,6 +2453,8 @@ void SceneLightSheet::setSceneLight(SceneLight *light) {
         shadowMapFOVProp->set(light->getShadowMapFOV());
         shadowResolutionProp->set(light->getShadowMapResolution());
         
+        updateOptionVisibility();
+        
         enabled = true;
     } else {
         enabled = false;
@@ -2464,6 +2493,7 @@ void SceneLightSheet::handleEvent(Event *event) {
             light->setSpotlightProperties(light->getSpotlightCutoff(), spotlightExponentProp->get());
         }
 
+        updateOptionVisibility();
     }
     PropSheet::handleEvent(event);
 }

+ 0 - 1
IDE/Contents/Source/TransformGizmo.cpp

@@ -118,7 +118,6 @@ TransformGizmo::TransformGizmo(Scene *targetScene, Camera *targetCamera) : Entit
 	yArrow->setPosition(0.0, 1.0, 0.0);
 	yArrow->depthTest = false;
 	trasnformDecorators->addChild(yArrow);
-    yArrow->setMaterialByName("Unlit");
 	
 	xArrow = new ScenePrimitive(ScenePrimitive::TYPE_CONE, 0.2, 0.05, 12);
 	xArrow->setColor(1.0, 0.0, 0.0, 1.0);