Рубрики
ShaderLab Surface

#pragma surface

Поверхностный шейдер

#pragma surface <surface function> <lighting model> <optional parameters>
  • <surface function> своя процедура отрисовки поверхности

[post10604 pragma]

[post10639 lightingmodel]

Рубрики
ShaderLab Шейдеры

lighting model

в шейдере будет использоваться модель освещения

  • Световые составляющие модели освещения
    • diffuse
      • Модель Ламберта рассеянная составляющая
        • моделирует идеальное диффузное освещение. Считается, что свет при попадании на поверхность рассеивается равномерно во все стороны. При расчете такого освещения учитывается только ориентация поверхности (нормаль N) и направление на источник света (вектор L). Рассеянная составляющая рассчитывается по закону косинусов (закон Ламберта)
  • простые встроенные
    • физически обоснованные
      • Standard настройка отражения
        • SurfaceOutputStandard
      • StandardSpecular
        • SurfaceOutputStandardSpecular
    • не физически обоснованные
      • Lambert diffuse
      • BlinnPhong specular
Рубрики
Cg Шейдеры

#pragma

#pragma [...]
  • директива препроцессора
    • предоставляют компилятору шейдера дополнительную информацию,
      которая не охватывается другими типами директив препроцессора

 

Рубрики
C# Fragments "Unity-C#" test "C#" ООП "Интерфейс" ООП "Свойство"

C# «Получить конвертированное значение свойства экземпляра по имени в интерфейсе»

public interface ITest
{
/// <summary>
/// проверка экземпляра типа Dictionary на заполенность
/// </summary>
public bool Пустой  => System.Convert.ToInt32(this.GetType().GetProperty("Count").GetValue(this))== 0;
}
public class Test:Dictionary<uint,string> ITest{
}
ITest Ex= new Test();
Debug.log(Ex.Пустой);
Рубрики
C# Fragments "Unity-C#" test "C#" Метод ООП "Интерфейс"

C# «Метод интерфейса присваивает значения свойствам без реализации в классе»

using UnityEngine;
namespace test2208041738
{
    public interface ITest
    {
        public byte Prop1
        {
            get;
            set;
        }
        public string Prop2
        {
            get;
            set;
        }
public void Method_props_assign() => this.Method(2, "hello");

public (byte, string) Method(byte Prop1, string Prop2) => (this.Prop1 = Prop1, this.Prop2 = Prop2);
}
    public class Test : ITest
    {
        private byte _prop1;
        private string _prop2;
        
        public byte Prop1
        {
            get => _prop1;
            set => _prop1 = value;
        }
        public string Prop2
        {
            get => _prop2;
            set => _prop2 = value;
        }
        static public void test()
        {
            ITest t = new Test();
            t.Method_props_assign();
            Debug.Log(t.Prop1 + "," + t.Prop2);
        }
    }
}