leonsal 8 лет назад
Родитель
Сommit
f0f3614614
2 измененных файлов с 19 добавлено и 2 удалено
  1. 9 2
      material/material.go
  2. 10 0
      material/pbr_mr.go

+ 9 - 2
material/material.go

@@ -218,13 +218,20 @@ func (mat *Material) SetPolygonOffset(factor, units float32) {
 	mat.polyOffsetUnits = units
 }
 
-// SetShaderDefine defines a name with the specified value which will
-// be passed to this material shader.
+// SetShaderDefine defines a name with the specified value which are
+// passed to this material shader.
 func (mat *Material) SetShaderDefine(name, value string) {
 
 	mat.defines[name] = value
 }
 
+// UnsetShaderDefines removes the specified name from the defines which
+// are passed to this material shader.
+func (mat *Material) UnsetShaderDefine(name string) {
+
+	delete(mat.defines, name)
+}
+
 // ShaderDefines returns a map with the shader defines.
 func (mat *Material) ShaderDefines() map[string]string {
 

+ 10 - 0
material/pbr_mr.go

@@ -65,6 +65,8 @@ func (m *PbrMr) SetBaseColorTexture(tex *texture.Texture2D) *PbrMr {
 	if m.baseColorTex != nil {
 		m.baseColorTex.SetUniformNames("uBaseColorSampler", "uBaseColorTexParams")
 		m.SetShaderDefine("HAS_BASECOLORMAP", "")
+	} else {
+		m.UnsetShaderDefine("HAS_BASECOLORMAP")
 	}
 	return m
 }
@@ -97,6 +99,8 @@ func (m *PbrMr) SetMetallicRoughnessTexture(tex *texture.Texture2D) *PbrMr {
 	if m.metallicRoughnessTex != nil {
 		m.metallicRoughnessTex.SetUniformNames("uMetallicRoughnessSampler", "uMetallicRoughnessTexParams")
 		m.SetShaderDefine("HAS_METALROUGHNESSMAP", "")
+	} else {
+		m.UnsetShaderDefine("HAS_METALROUGHNESSMAP")
 	}
 	return m
 }
@@ -109,6 +113,8 @@ func (m *PbrMr) SetNormalTexture(tex *texture.Texture2D) *PbrMr {
 	if m.normalTex != nil {
 		m.normalTex.SetUniformNames("uNormalSampler", "uNormalSamplerTexParams")
 		m.SetShaderDefine("HAS_NORMALMAP", "")
+	} else {
+		m.UnsetShaderDefine("HAS_NORMALMAP")
 	}
 	return m
 }
@@ -121,6 +127,8 @@ func (m *PbrMr) SetOcclusionTexture(tex *texture.Texture2D) *PbrMr {
 	if m.occlusionTex != nil {
 		m.occlusionTex.SetUniformNames("uOcclusionSampler", "uOcclusionTexParams")
 		m.SetShaderDefine("HAS_OCCLUSIONMAP", "")
+	} else {
+		m.UnsetShaderDefine("HAS_OCCLUSIONMAP")
 	}
 	return m
 }
@@ -133,6 +141,8 @@ func (m *PbrMr) SetEmissiveTexture(tex *texture.Texture2D) *PbrMr {
 	if m.emissiveTex != nil {
 		m.emissiveTex.SetUniformNames("uEmissiveSampler", "uEmissiveSamplerTexParams")
 		m.SetShaderDefine("HAS_EMISSIVEMAP", "")
+	} else {
+		m.UnsetShaderDefine("HAS_EMISSIVEMAP")
 	}
 	return m
 }