Sets integer parameter (uniform variable) for custom screen shader (discrete values, flags, indices).
Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (integer value, will be passed to shader constant buffer).
Returns nothing.
Shaders
Parameters & Returns
Parameters
shaderInt
nameString
valueInt
Returns
Void
Quick Summary
Sets integer parameter (uniform variable) for custom screen shader (discrete values, flags, indices).
Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (integer value, will be passed to shader constant buffer).
Returns nothing.
Technical Exegesis...
Sets integer parameter (uniform variable) for custom screen shader (discrete values, flags, indices). Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (integer value, will be passed to shader constant buffer). Returns nothing. Stores value in shader.intParams[name] map (persists until changed or shader freed).
Sets integer parameter (uniform variable) for custom screen shader (discrete values, flags, indices). Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (integer value, will be passed to shader constant buffer). Returns nothing. Stores value in shader.intParams[name] map (persists until changed or shader freed). Use to pass discrete values (effect mode selection, texture indices, boolean flags), control shader behavior (enable/disable features, switch algorithms), or configure sampling (iteration counts, grid sizes). Parameter behavior: stored in map (std::map<std::string, int> persists per shader), passed to GPU (shader reads via constant buffer during rendering), persists until changed (call again with same name to update, survives across frames), independent of apply (set before or after b3dApplyScreenShader, takes effect next frame). Use cases: (1) Effect mode (b3dSetShaderInt(shader, "blurMode", 1) switch between box blur/Gaussian blur), (2) Boolean flags (b3dSetShaderInt(shader, "enableVignette", 1) toggle vignette on/off, 0=off, 1=on), (3) Texture index (b3dSetShaderInt(shader, "lutTexture", 2) select color LUT from array), (4) Iteration count (b3dSetShaderInt(shader, "samples", 16) number of blur samples/ray marching steps), (5) Algorithm selection (b3dSetShaderInt(shader, "tonemapMode", 0) 0=none, 1=Reinhard, 2=ACES). Common patterns: set = b3dSetShaderInt(shader, "paramName", value) configure parameter; toggle = b3dSetShaderInt(shader, "enabled", 1 - currentValue) flip boolean flag. Typical workflow: load shader (shader = b3dLoadScreenShader("effect.hlsl")), set parameters (this function for integers, b3dSetShaderFloat for floats), apply shader (b3dApplyScreenShader(shader) activate), render (b3dRenderWorld applies shader, reads parameters), update parameters (call SetShaderInt again to change modes). HLSL shader access: declare uniform (cbuffer ShaderParams { int blurMode; int enableVignette; int samples; }), read in pixel shader (if (blurMode == 1) { GaussianBlur(); } else { BoxBlur(); }), match parameter name (C++ "blurMode" must match HLSL "blurMode" exactly, case-sensitive). Common parameter names: "enabled" or "enableX" (boolean flag 0=off, 1=on, toggle feature), "mode" or "xMode" (algorithm selection 0/1/2/etc, switch technique), "samples" or "iterations" (loop count, quality setting), "textureIndex" (select texture from array), "debugMode" (visualization mode for debugging), "channel" (select RGBA channel 0=R, 1=G, 2=B, 3=A), "level" or "mipLevel" (mipmap level for texture sampling). Typical values: boolean flags 0 or 1 (0=false, 1=true, sometimes -1 for special), mode selection 0-3 (small range, switch statement in shader), samples/iterations 1-256 (quality setting, higher=slower but better), texture indices 0-15 (DX12 descriptor table limits, depends on shader binding), channel selection 0-3 (RGBA components). Performance: set cost zero (map insertion/update, trivial CPU operation), parameter read cost zero (constant buffer upload once per frame, GPU reads efficiently), many parameters OK (dozens of ints no problem, constant buffer has 64KB limit but practically unlimited), no GPU branching cost (mode selection compiled efficiently by shader compiler). Validation: ignores if shader <= 0 (invalid handle, silent no-op), ignores if name null (null pointer, early return), ignores if shader not found (not in g_screenShaders3D map, silent no-op), accepts any value (no range validation, user responsible for valid range). No return value: void function (doesn't indicate success/failure), assumes success (parameter set if shader valid, nothing if invalid), silent operation (no error messages, no confirmation prints). Parameter lifetime: persists until changed (call SetShaderInt again with same name overwrites), survives apply/clear (clearing active shader doesn't erase parameters, reapply uses same values), freed on shader free (b3dFreeScreenShader removes entire shader including all parameters). Multiple shaders: each shader has independent parameters (shader1.intParams separate from shader2.intParams), same parameter name OK (different shaders can use "mode" with different values), switch shaders instantly (no parameter copying, each shader remembers own values). Integer vs Float: use int for discrete values (mode selection, boolean flags, indices, counts), use float for continuous values (strength, brightness, position, time), HLSL shader must match type (int parameter needs int uniform, float parameter needs float uniform). Related: b3dSetShaderFloat sets float parameter (for continuous values, strength, time), b3dSetShaderFloat2 sets 2-component vector (vec2 in HLSL, UV offsets, screen size), b3dSetShaderFloat3 sets 3-component vector (vec3 in HLSL, RGB color, XYZ position), b3dSetShaderFloat4 sets 4-component vector (vec4 in HLSL, RGBA color, full vector), b3dLoadScreenShader loads shader (creates shader configured by this function), b3dApplyScreenShader applies shader (activates shader that uses parameters set here).