Sets float parameter (uniform variable) for custom screen shader (configures shader behavior).
Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (float value, will be passed to shader constant buffer).
Returns nothing.
Shaders
Parameters & Returns
Parameters
shaderInt
nameString
valueDouble
Returns
Void
Quick Summary
Sets float parameter (uniform variable) for custom screen shader (configures shader behavior).
Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (float value, will be passed to shader constant buffer).
Returns nothing.
Technical Exegesis...
Sets float parameter (uniform variable) for custom screen shader (configures shader behavior). Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (float value, will be passed to shader constant buffer). Returns nothing. Stores value in shader.floatParams[name] map (persists until changed or shader freed).
Sets float parameter (uniform variable) for custom screen shader (configures shader behavior). Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), value (float value, will be passed to shader constant buffer). Returns nothing. Stores value in shader.floatParams[name] map (persists until changed or shader freed). Use to configure shader effects (brightness, contrast, blur radius, distortion strength), pass time values (animation/scrolling effects), or control effect intensity (fade in/out, conditional effects). Parameter behavior: stored in map (std::map<std::string, float> 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) Set effect strength (b3dSetShaderFloat(shader, "intensity", 0.5) control blur/distortion intensity), (2) Pass time (b3dSetShaderFloat(shader, "time", MilliSecs()/1000.0) animate shader effects), (3) Configure appearance (b3dSetShaderFloat(shader, "brightness", 1.2) adjust post-processing brightness), (4) Conditional effects (b3dSetShaderFloat(shader, "damageFlash", flashAmount) flash red on damage), (5) Smooth transitions (lerp value over frames, gradual fade effects). Common patterns: set = b3dSetShaderFloat(shader, "paramName", value) configure parameter; animate = b3dSetShaderFloat(shader, "time", MilliSecs()/1000.0) each frame for scrolling/pulsing. Typical workflow: load shader (shader = b3dLoadScreenShader("effect.hlsl")), set parameters (this function multiple times for different uniforms), apply shader (b3dApplyScreenShader(shader) activate), render (b3dRenderWorld applies shader, reads parameters), update parameters (call SetShaderFloat again to animate, doesn't need reapply). HLSL shader access: declare uniform (cbuffer ShaderParams { float intensity; float time; float brightness; }), read in pixel shader (finalColor *= intensity, color += sin(time) for pulsing), match parameter name (C++ "intensity" must match HLSL "intensity" exactly, case-sensitive). Common parameter names: "time" (animation/scrolling, seconds or milliseconds), "intensity" (effect strength 0.0-1.0 typically), "brightness" (multiplicative brightness adjustment), "contrast" (contrast adjustment), "blurRadius" (Gaussian blur pixel radius), "distortionAmount" (wave distortion strength), "vignette" (vignette effect intensity), "exposure" (HDR tone mapping exposure). Typical values: intensity/strength 0.0-1.0 (normalized effect amount, 0=off, 1=full effect), time continuously increasing (MilliSecs()/1000.0 for seconds, wrap at large values to prevent precision loss), brightness 0.5-2.0 (0.5=darker, 1.0=normal, 2.0=brighter), blur radius 1.0-10.0 pixels (small values subtle, large values expensive), distortion -1.0 to 1.0 (negative/positive for direction). 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 floats no problem, constant buffer has 64KB limit but practically unlimited), update cost minimal (changing parameters cheap, no shader recompilation). 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 sensible values). 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 SetShaderFloat 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.floatParams separate from shader2.floatParams), same parameter name OK (different shaders can use "intensity" with different values), switch shaders instantly (no parameter copying, each shader remembers own values). Related: b3dSetShaderInt sets integer parameter (for discrete values, flags, indices), 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).