{"record":{"id":"96dae6b62b4fbbfe","repo":"stride3d/stride","slug":"value-colortransformbase","errorCode":null,"errorMessage":"value","messagePattern":"value","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Rendering/Rendering/Images/ColorTransforms/ColorTransformBase.cs","lineNumber":58,"sourceCode":"        /// </summary>\n        [DataMemberIgnore]\n        public ColorTransformGroup Group { get; internal set; }\n\n        /// <summary>\n        /// Gets or sets the shader source for this color transform.\n        /// </summary>\n        [DataMemberIgnore]\n        public ShaderSource Shader\n        {\n            get\n            {\n                return Parameters.Get(ColorTransformKeys.Shader);\n            }\n            set\n            {\n                if (value == null)\n                {\n                    throw new ArgumentNullException(\"value\", $\"{nameof(Shader)} can not be null\");\n                }\n\n                Parameters.Set(ColorTransformKeys.Shader, value);\n                Group?.NotifyPermutationChange();\n            }\n        }\n\n        /// <summary>\n        /// Gets the parameters.\n        /// </summary>\n        /// <value>The parameters.</value>\n        [DataMemberIgnore]\n        public ParameterCollection Parameters { get; private set; }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether this <see cref=\"ColorTransformBase\"/> is enabled.\n        /// </summary>\n        /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Rendering/Rendering/Images/ColorTransforms/ColorTransformBase.cs#L40-L76","documentation":"The Shader property setter in ColorTransformBase throws ArgumentNullException when assigning null. The shader source is stored in the transform's ParameterCollection and is required to build the effect; the setter also notifies the parent ColorTransformGroup of a permutation change, which requires a valid shader. The message reads 'Shader can not be null'.","triggerScenarios":"Assigning transform.Shader = null, e.g. while trying to 'reset' a transform or clearing cached state on a ColorTransform that belongs to a ColorTransformGroup.","commonSituations":"Generic reset code that nulls properties; serialization round-trips that assign null when the shader source was not persisted; mistaking the property for an optional override.","solutions":["Assign a valid ShaderMixinGeneratorSource (or equivalent shader source) instead of null.","To disable a transform, set its Enabled property to false rather than nulling the shader.","Remove the transform from the ColorTransformGroup if it is no longer needed."],"exampleFix":"// before\ntransform.Shader = null;\n// after\ntransform.Enabled = false;","handlingStrategy":"validation","validationCode":"if (shaderSource == null) throw new ArgumentException(\"Shader source required\");\ntransform.Shader = shaderSource;","typeGuard":"if (transform.Shader is null) { /* assign before use */ }","tryCatchPattern":"try { transform.Shader = source; }\ncatch (ArgumentNullException ex) { Log.Error(ex, \"Null shader source assignment\"); }","preventionTips":["Disable transforms via Enabled=false instead of nulling Shader","Always construct transforms with a valid shader name","Treat Shader as non-nullable in your code model"],"tags":["null-argument","shader","color-transform"],"backgroundTag":"null-argument","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}