Exemplo n.º 1
0
        public ShaderPropertyValue(ShaderPropertyValue toCopy)
        {
            this.valueName    = string.Copy(toCopy.valueName) ?? throw new ArgumentNullException(nameof(valueName));
            this.stringVal    = string.Copy(toCopy.stringVal) ?? throw new ArgumentNullException(nameof(stringVal));
            this.boolValue    = toCopy.boolValue;
            this.floatValue   = toCopy.floatValue;
            this.vectorValue  = new Vector4(toCopy.vectorValue.x, toCopy.vectorValue.y, toCopy.vectorValue.z, toCopy.vectorValue.w);
            this.colorValue   = new Color(toCopy.colorValue.r, toCopy.colorValue.g, toCopy.colorValue.b, toCopy.colorValue.a);
            this.textureValue = toCopy.textureValue;


            this.type = toCopy.type;
        }
Exemplo n.º 2
0
        public static int GetSize(this ShaderParameterType type)
        {
            switch (type)
            {
            case ShaderParameterType.Float:
                return(4);

            case ShaderParameterType.Vector2:
                return(8);

            case ShaderParameterType.Vector3:
                return(12);

            case ShaderParameterType.Vector4:
                return(16);

            case ShaderParameterType.Matrix:
                return(64);

            default:
                throw new InvalidOperationException("Unsupported ShaderParameterType.");
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// シェーダ設定パラメータを生成します。
        /// </summary>
        /// <param name="type_string">型名</param>
        /// <param name="name">名称</param>
        /// <param name="value">値</param>
        public ShaderParameter(string type_string, string name, string value)
        {
            this.name = name;

            switch (type_string)
            {
            case "string":
                type = ShaderParameterType.String;
                SetString(value);
                break;

            case "float":
                type = ShaderParameterType.Float;
                SetFloat(value);
                break;

            case "float3":
                type = ShaderParameterType.Float3;
                SetFloat3(value);
                break;

            case "float4":
                type = ShaderParameterType.Float4;
                SetFloat4(value);
                break;

            case "texture":
                type = ShaderParameterType.Texture;
                SetTexture(value);
                break;

            default:
                type = ShaderParameterType.Unknown;
                break;
            }
        }
Exemplo n.º 4
0
        internal ShaderParameter(Shader shader, string name, ShaderParameterType type, int count)
        {
            Shader = shader;
            Name   = name;
            Type   = type;
            Count  = count;
            switch (type)
            {
            case ShaderParameterType.Texture2D:
            case ShaderParameterType.Sampler2D:
                break;

            case ShaderParameterType.Float:
                Value = new float[count];
                break;

            case ShaderParameterType.Vector2:
                Value = new float[2 * count];
                break;

            case ShaderParameterType.Vector3:
                Value = new float[3 * count];
                break;

            case ShaderParameterType.Vector4:
                Value = new float[4 * count];
                break;

            case ShaderParameterType.Matrix:
                Value = new float[16 * count];
                break;

            default:
                throw new ArgumentException("type");
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Creates a new shader parameter.
 /// </summary>
 /// <param name="name">Name of the parameter variable.</param>
 /// <param name="type">Data type of the parameter.</param>
 /// <param name="isInternal">Determines is parameter managed internally be the renderer, or is expected to be set 
 ///                          by the user.</param>
 internal ShaderParameter(string name, ShaderParameterType type, bool isInternal)
 {
     this.name = name;
     this.type = type;
     this.isInternal = isInternal;
 }
Exemplo n.º 6
0
 private static extern void Internal_GetShaderParameters(IntPtr nativeInstance, out string[] names,
     out ShaderParameterType[] types, out bool[] visibility);
Exemplo n.º 7
0
 /// <summary>
 /// Creates a new shader parameter.
 /// </summary>
 /// <param name="name">Name of the parameter variable.</param>
 /// <param name="type">Data type of the parameter.</param>
 /// <param name="isInternal">Determines is parameter managed internally be the renderer, or is expected to be set
 ///                          by the user.</param>
 internal ShaderParameter(string name, ShaderParameterType type, bool isInternal)
 {
     this.name       = name;
     this.type       = type;
     this.isInternal = isInternal;
 }
Exemplo n.º 8
0
 public static extern void GetShader(Shader shader, ShaderParameterType type, out int param);
Exemplo n.º 9
0
        /// <summary>
        /// シェーダ設定パラメータを生成します。
        /// </summary>
        /// <param name="type_string">型名</param>
        /// <param name="name">名称</param>
        /// <param name="value">値</param>
        public ShaderParameter(string type_string, string name, string value)
        {
            this.name = name;

            switch (type_string)
            {
            case "string":
                type = ShaderParameterType.String;
                SetString(value);
                break;
            case "float":
                type = ShaderParameterType.Float;
                SetFloat(value);
                break;
            case "float3":
                type = ShaderParameterType.Float3;
                SetFloat3(value);
                break;
            case "float4":
                type = ShaderParameterType.Float4;
                SetFloat4(value);
                break;
            case "texture":
                type = ShaderParameterType.Texture;
                SetString(value);
                break;
            default:
                type = ShaderParameterType.Unknown;
                break;
            }
        }