Sets 2-component vector parameter (float2/vec2 uniform) for custom screen shader (UV offsets, resolution, 2D values).
Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), x (first component, float), y (second component, float).
Returns nothing.
Shaders
Parameters & Returns
Parameters
shaderInt
nameString
xDouble
yDouble
Returns
Void
Quick Summary
Sets 2-component vector parameter (float2/vec2 uniform) for custom screen shader (UV offsets, resolution, 2D values).
Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), x (first component, float), y (second component, float).
Returns nothing.
Technical Exegesis...
Sets 2-component vector parameter (float2/vec2 uniform) for custom screen shader (UV offsets, resolution, 2D values). Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), x (first component, float), y (second component, float). Returns nothing. Stores components in shader.floatParams map as name.x and name.y (two separate float entries, persists until changed).
Sets 2-component vector parameter (float2/vec2 uniform) for custom screen shader (UV offsets, resolution, 2D values). Takes shader (shader handle from b3dLoadScreenShader, positive integer), name (parameter name, string matching HLSL uniform variable), x (first component, float), y (second component, float). Returns nothing. Stores components in shader.floatParams map as name.x and name.y (two separate float entries, persists until changed). Use to pass 2D vectors (screen resolution, UV offsets, scroll direction), configure 2D effects (blur direction, distortion center, texture scale), or control 2D parameters (range min/max, fade start/end). Storage behavior: components stored separately (name.x stores x value, name.y stores y value in floatParams map), shader reads as float2 (HLSL shader accesses as single vec2, engine packs components automatically), 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) Screen resolution (b3dSetShaderFloat2(shader, "resolution", GraphicsWidth(), GraphicsHeight()) for UV calculations), (2) UV offset (b3dSetShaderFloat2(shader, "uvOffset", offsetX, offsetY) scroll texture), (3) Blur direction (b3dSetShaderFloat2(shader, "blurDir", 1.0, 0.0) horizontal blur, 0.0, 1.0 vertical), (4) Distortion center (b3dSetShaderFloat2(shader, "center", 0.5, 0.5) screen center for radial distortion), (5) Texture scale (b3dSetShaderFloat2(shader, "scale", 2.0, 2.0) repeat texture). Common patterns: set = b3dSetShaderFloat2(shader, "paramName", x, y) configure vector; animate = b3dSetShaderFloat2(shader, "offset", Sin(time), Cos(time)) circular motion. Typical workflow: load shader (shader = b3dLoadScreenShader("effect.hlsl")), set vector (this function for 2D values), apply shader (b3dApplyScreenShader(shader) activate), render (b3dRenderWorld applies shader, reads vector), update vector (call SetShaderFloat2 again to animate). HLSL shader access: declare uniform (cbuffer ShaderParams { float2 resolution; float2 uvOffset; float2 blurDir; }), read in pixel shader (float2 uv = input.uv + uvOffset; float aspectRatio = resolution.x / resolution.y;), match parameter name (C++ "resolution" must match HLSL "resolution" exactly, case-sensitive), access components (resolution.x, resolution.y or resolution.xy for swizzling). Common parameter names: "resolution" (screen width/height in pixels, GraphicsWidth/Height), "uvOffset" (texture coordinate offset for scrolling), "blurDir" or "direction" (directional blur vector, normalized or pixel offset), "center" (screen-space center point 0.0-1.0, for radial effects), "scale" (texture repeat scale, multiply UVs), "velocity" (motion blur vector, pixel/frame), "range" (min/max range for effects, x=min y=max). Typical values: resolution (screen dimensions, 1920x1080 typical, use GraphicsWidth/Height), uvOffset (0.0-1.0 for full screen scroll, wrap with fmod or frac), blur direction (normalized 0.0-1.0, or pixel offsets 1.0-10.0), center (0.5, 0.5 for screen center, 0.0-1.0 range), scale (1.0=normal, 2.0=double size, 0.5=half size), velocity (pixel displacement per frame, -10 to 10 typical). Performance: set cost zero (two map insertions/updates, trivial CPU operation), parameter read cost zero (constant buffer upload once per frame, GPU reads efficiently), vector packing automatic (engine combines name.x and name.y into float2 for shader), no performance difference vs two SetShaderFloat calls (same storage, just convenience function). Component storage: x component stored as "name.x" key (floatParams["resolution.x"] = 1920.0), y component stored as "name.y" key (floatParams["resolution.y"] = 1080.0), shader reads combined (HLSL sees float2 resolution = {1920.0, 1080.0}), can mix with SetShaderFloat (can set "other.z" separately with SetShaderFloat, components independent). 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 values (no range validation, user responsible for sensible values). No return value: void function (doesn't indicate success/failure), assumes success (parameters set if shader valid, nothing if invalid), silent operation (no error messages, no confirmation prints). Parameter lifetime: persists until changed (call SetShaderFloat2 again with same name overwrites both components), 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), individual components persist (name.x and name.y stored separately, can overwrite with SetShaderFloat if needed). Multiple shaders: each shader has independent parameters (shader1.floatParams separate from shader2.floatParams), same parameter name OK (different shaders can use "resolution" with different values), switch shaders instantly (no parameter copying, each shader remembers own values). Related: b3dSetShaderFloat sets single float (for scalar values, strength, time), b3dSetShaderInt sets integer parameter (for discrete values, flags, indices), 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).