Доброго времени суток Тостер! Сегодня я столкнулся с проблемой освещения и довольно странными "Артефактами" на объектах. Дело было так: Я оптимизировал сцену путем - Комбинируем в один объект, даем материал и красим в разные цвета с помощью скрипта и упрощённого шейдера и таким образом я снизил число Батчей и Вызовов отрисовуки. После того как я оптимизировал сцену я начал запекать всю эту сцену методом Precomputed Realtime GI (Global Illumination) так как посчитал что предварительное вычисление освещения в сцене не навредит производительности и наведёт свою атмосферу (Результат выше))
Единственное нарекание которое я заметил это "артефакты" на определённом скомбинированном объекте - Деревянных ящиках... Я не знаю кто точно замешан в этом дерзком преступлении, поэтому прошу помощи может кто-то сталкивался с этим?
Пример "артефактов":
Настройки света и запекания:
И таких куча в сцене и почти каждый ящик с этой проблемой...
Код шейдера и сам скрипт ниже...
Код Шейдера - СпойлерShader "Custom/VertexColors" {
Properties
{
_Shininess("Shininess", Range (0.03, 1)) = 0.078125
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf BlinnPhong vertex:vert
half _Shininess;
struct Input{
half2 uv_MainTex;
fixed3 vertColors;
};
void vert (inout appdata_full v, out Input o) {
o.vertColors = v.color.rgb;
o.uv_MainTex = v.texcoord;
}
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = IN.vertColors.rgb;
o.Specular = 1;
o.Gloss = _Shininess;
}
ENDCG
}
FallBack "Specular"
}
Скрипт на изменение цветов [C#]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class UpdateVerts : MonoBehaviour
{
public Color newColor = Color.grey;
void Update ()
{
Mesh mesh = GetComponent<MeshFilter>().mesh;
Color[] colors = new Color[mesh.vertices.Length];
for(int i = 0; i < mesh.vertices.Length; i++)
{
colors[i] = newColor;
}
mesh.colors = colors;
}
}
Заранее огромное Спасибо, за любую помощь в этой теме!