Sets integer parameter (uniform variable) for entity shader (discrete values, flags, mode selection).
Takes shader (shader handle from b3dLoadEntityShader, positive integer), name (parameter name, string matching HLSL CustomShaderParams cbuffer field), 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 entity shader (discrete values, flags, mode selection).
Takes shader (shader handle from b3dLoadEntityShader, positive integer), name (parameter name, string matching HLSL CustomShaderParams cbuffer field), value (integer value, will be passed to shader constant buffer).
Returns nothing.
Technical Exegesis...
Sets integer parameter (uniform variable) for entity shader (discrete values, flags, mode selection). Takes shader (shader handle from b3dLoadEntityShader, positive integer), name (parameter name, string matching HLSL CustomShaderParams cbuffer field), 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 entity shader (discrete values, flags, mode selection). Takes shader (shader handle from b3dLoadEntityShader, positive integer), name (parameter name, string matching HLSL CustomShaderParams cbuffer field), 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 (shading mode selection, boolean flags), control shader behavior (enable/disable features, switch algorithms), or configure sampling (iteration counts, LOD levels). Parameter behavior: stored in map (std::map<std::string, int> persists per shader), passed to GPU (shader reads via CustomShaderParams cbuffer register(b3) during rendering), persists until changed (call again with same name to update, survives across frames), shared by all entities (shader's parameters used by all entities referencing this shader, not per-entity). Use cases: (1) Shading mode (b3dSetEntityShaderInt(shader, "shadingMode", 1) 0=flat, 1=smooth, 2=toon), (2) Boolean flags (b3dSetEntityShaderInt(shader, "enableOutline", 1) toggle outline on/off, 0=off, 1=on), (3) Texture slot (b3dSetEntityShaderInt(shader, "customTexIndex", 2) select texture from array), (4) LOD level (b3dSetEntityShaderInt(shader, "lodLevel", 0) detail level), (5) Debug mode (b3dSetEntityShaderInt(shader, "debugView", 0) 0=normal, 1=normals, 2=UVs, 3=wireframe). Common patterns: set = b3dSetEntityShaderInt(shader, "paramName", value) configure parameter; toggle = b3dSetEntityShaderInt(shader, "enabled", 1 - currentValue) flip boolean flag. Typical workflow: load shader (shader = b3dLoadEntityShader("toon.hlsl")), set parameters (this function for integers, b3dSetEntityShaderFloat for floats), assign to entity (b3dEntityShader(entity, shader) activate), render (b3dRenderWorld applies shader with parameters), update parameters (call SetEntityShaderInt again to change modes, all entities using shader affected). HLSL shader access: declare in CustomShaderParams cbuffer (cbuffer CustomShaderParams : register(b3) { int shadingMode; int enableOutline; int lodLevel; }), read in pixel shader (if (shadingMode == 1) { toonShading(); } else { flatShading(); }), match parameter name (C++ "shadingMode" must match HLSL "shadingMode" exactly, case-sensitive). Common parameter names: "shadingMode" or "renderMode" (algorithm selection 0/1/2/etc, switch technique), "enableX" or "useX" (boolean flag 0=off, 1=on, toggle feature), "debugMode" or "debugView" (visualization mode for debugging), "textureIndex" or "texSlot" (select texture from array), "lodLevel" (level of detail 0=high, 1=medium, 2=low), "iterations" or "samples" (loop count, quality setting). 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), iterations/samples 1-256 (quality setting, higher=slower but better), texture indices 0-7 (descriptor table limits, depends on shader binding), LOD levels 0-3 (detail levels, 0=highest quality). Performance: set cost zero (map insertion/update, trivial CPU operation), parameter read cost zero (constant buffer upload once per entity draw, GPU reads efficiently), many parameters OK (dozens of ints no problem, cbuffer 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_entityShaders 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 SetEntityShaderInt again with same name overwrites), survives entity changes (shader parameters independent of entity assignments), freed on shader free (b3dFreeEntityShader removes entire shader including all parameters). Integer vs Float: use int for discrete values (mode selection, boolean flags, indices, counts), use float for continuous values (strength, roughness, position, time), HLSL shader must match type (int parameter needs int uniform, float parameter needs float uniform). Related: b3dSetEntityShaderFloat sets float parameter (for continuous values, intensity, time), b3dSetEntityShaderFloat2 sets 2-component vector (vec2 in HLSL, UV offsets), b3dSetEntityShaderFloat3 sets 3-component vector (vec3 in HLSL, RGB colors), b3dSetEntityShaderFloat4 sets 4-component vector (vec4 in HLSL, RGBA colors), b3dSetEntityShaderTexture sets shader texture (custom texture binding), b3dLoadEntityShader loads shader (creates shader configured by this function), b3dEntityShader applies shader to entity (activates shader that uses parameters set here).