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; }
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."); } }
/// <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; } }
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"); } }
/// <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; }
private static extern void Internal_GetShaderParameters(IntPtr nativeInstance, out string[] names, out ShaderParameterType[] types, out bool[] visibility);
public static extern void GetShader(Shader shader, ShaderParameterType type, out int param);
/// <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; } }