NOTE: Some features do not work in basic version of hook, for example basic version do not support physic, tessellation, POM and some other things. Key bindings F2 - show bounds (this one can be removed further) F4 - show hook menu F9 - recreate environment cubemap F11 - recompile shader PrintScreen - make Screenshot (screenshot will be created in binaries folder) Ctrl + PrintScreen - make HiRes Screenshot (screenshot will be created in binaries folder) DblClick LMB - hook object selection, only when hook gui are visible Middle mouse button - object manipulating FAQ 1. Why my eyes has a strong green color? You need disable eye reflection and eye specular in character customization menu and use eyeball texture with assigned EyesPass shader. 2. Why game crash at start? At this moment mostly two reasons lead to crash – a lot of users don't delete other graphic mods properly and crash occure due to dxgi.dll (from sweetfx or reshade) in binaries folder and the second reson missing physx binaries (physx3_x86.dll, physx3common_x86.dll, physx3cooking_x86.dll), which should be in game binaries folder. Difference between Basic and Extended version Basic version do not contain: tessellation, POM texture autoreloading hook static objects/manipulating so you need hit F11 to perform update. if set to 1. then will be used parameter fSkinWetness. Parameters from section global_constant require recompiling shaders code.substep amount for physic simulation.must be at half than in previous versions of hook iLightPackMode define mode for storing light data. [global_settings] fFovMultiplier with this parameter hook will modify game fov value. I'm think due to some mod problem.more quality. Note . 0 . now this parameter define smooth transition form skin glossiness provided via additional texture to allmost maximum value for glossiness.no info. ItextureTrackingEnable on/off hook texture autoreloading. Default value 1024.iShadowMapSize . For now only one mode implemented. More size . 1 . Note . 2 . [global_constants] iShadowMapSize define size of texture which hold shadow mask data. iPhysXSolverIterations . Default value 0.hair physic 1. so changing this param has no sense. iProfileEnable define mode to show additional info. .fps counter and GPU profile information . Note . Hook settings Settings parameters devided into a several sections. Default value 0. Default value 1.time in ms which took every render step.fps counter. if you just play in game.fov will be changed only for rendering. fSkinWetness in opposite to previous versions. Default value 1. set this parameter to 0 [render_settings] iUseSkinWetness if set to 0.by unknow reason game loose sweat intensity value after customizer closed. it can't be changed for other operations so picking transform gizmo will not work correctly under modifyed fov. then game sweat intesity will be used. default value was 20 Settings from below section will applied automatically. 0006 fEyeSpecular glosiness value for eye shading. enable 1 for screen space ambient occlusion effect. iDOFSteps define blur steps number for unfocused objects . Default value 0. Default value 1. iUseEyeShadowing enable 1. iOutlineEnable disable 0. max 10.5 fEyeShiftUp define a distance for shift eyeballs up. 1 always focused at near objects and blur far objects.4. Default value 1. fSubsurfaceAmount define amount of subsurface lighting which will be mixed with directional lighting for skin. enable 1 for outline effect fOutlineAmount amount of outline result which be applied to final image.iSubsurfaceEnable enable 1. min 0.0 focused at point in screen center. fEyeIrisScale allow scale a bit eye iris.1 iSSAOEnable disable0. iSubsurfaceSteps define steps number of subsurface effect.1.. Default value 0. normal range 0. fSubsurfaceRadius define blur radius for subsurface effect. iUseSSAODebug allow to show clean ssao effect result.. Default value 1. fSSAORadius occlusion check radius for ssao effect. disable 0 for screen space subsurface scattering effect. disable 0 for simulate eyelid shadows.5. fOutlineThreshold threshold for scene detail which will be ignored by outline effect iDOFEnable disable 0.15. Default value 1. fSSAOStrength define ssao contrast... fSubsurfaceTakeColor define amount of skin color which will be mixed with subsurface lighting color. enable 1 for Depth of Field effect iDOFType define DOF mode . Default value 0. 0. Default value 1. (on my opinion the eyes is too centered by verticaly ) work only if eye shader applied to eyeballs. enable 1 for glow effect fGlowAmount define amount of glow which be applied to final image fGlowAmountToColor define amount of glow which be treated as emmisive color iHDRBloomEnable enable 0. iGrainEnable . hook use maximum quality iGlowEnable disable 0.define size of grain fGrainAmount .fDOFBokehBias not used for now fDOFBokehBiasCurve not used for now fDOFBokehBrightnessThreshold brightness threshold for unfocused objects fDOFBokehBrightnessMultipiler increase brightness for unfocused objects fDOFRadiusScaleMultiplier define blur radius for unfocused objects iSMAAEnable disable 0 . enable 1 for screen antialiasing effect iSMAAQuality not used for now. Note . disable 1 for this effect fChromaPower . enable 1 for dynamic shadows .enable 0.strength/visibility of effect iChromaticAberrationEnable . enable 1 for sharpen effect fSharpenAmount define amount of sharpening.strength/visibility of effect iShadowEnable disable 0. 1 .HDRBloom parameters can be adjusted via level_definition file iHDRFuncType 0 . disable 1 for this effect fGrainSize .default HDR function.new HDR function which preserve more colors in dark parts of picture iSharpenEnable disable0.enable 0. disable 1 for bloom effect. 1. Settings the same as for level_definition file. In opposite to this. BUT for main11. glow. dof. Note different blur steps amount was implemented due to shadowing for alphablended objects greatly affect performance.Scale for HiRes Screenshot. default_room_sunling . Note if NOT EMPTY the ambient_color and ambient_intensity will be ignored. y.this settings used for customizer and any scene(room) which do not contain level_definition file. all object with custom shading and rooms with level_definition data can be rendered with maximum quality. level_definition allow to as setup the different environment property. Default objects vs custom object The main problem for hook is the rooms and objects for which we can't provide _pass or level_definition file with additional info for custom render. size_y. z for environment lighting capture point cubesize size_x. 2. higher valuse will produce artifacts from some effects like ssao. customizer_sunling. or you must provide relative path from ActiveMod folder if cubemap stored in separate folder.fx cubemaps you must provide full path to file. default_room_environment. see below. which is equivalent to normal unmodifyed image. Note cube will not used for environment lighting capture but if parallax_correction set to true the cube will be . cubecenter x. pass file allow to us assign to texture custom shading technique and provide additional data (textures and variables) due to this all objects which use thia texture will be rendered with assigned custom shader. Settings also contain sections: customizer_environment. as we have a wide control on how it would be rendered. Also for level_definition you must provide filename for cubemap if it stored in the same folder as level_definition. These object has property which not compatible with PBR rendered technique and will be rendered with default(minimal quality. insert to a room additional lighting and in future additional objects. if EMPTY then cubemap will be created from current scene(room) and will be used parameters ambient_color and ambient_intesity. iHiResScreenScale . Level Definition settings [environment] cubemap define path to external cubemap which will be used as environment light source.iShadowBlurStep define blur steps number for shadow edges iShadowBlurStepAlpha the same is abow but only for alphablended objects. default value is 1. 1. size_z for environment cube. fImageSaturation – allow to change final image saturation. disable false for environment lighting parallax correction ambient_color r. b . color for ambient lighting. see picture (difference in reflection without/with parallax correction) cubecolor r. rot_y. ambient_intensity intensity for ambient lighting sky_intensity intensity for every object which will use BackgroundPass shader see below.y. for sunlight intensity sunlight intensity .used for correct reflection vector.a – color for environment lighting bound box in Photoshop format (0-255) parallax_correction enable true.portions in Photoshop format (0-255).enable/disable for hook skybox object skybox_cubemap relative path to environment cubemap that will be used for skybox rendering [sun_light] type – sunlight.brightness lower than this value do not proceed to bloom effect hdr_bloom_amount amount of hdrebloom result which will be applied to image skybox_enable true/false . g.b. rot_z .portions in Photoshop format (0-255).ignored if game_control set to true.g.z Note . define type of hook object enable enable true. will be used for creation environment cubemap. color r. hdr_exposure exposure parameter which will be used for this scene hdr_bloom_clamp brightness threshold for HDRBloom effect . g. disable false for this hook object rotation rot_x. b .define rotation in degrees about global axis x. source_curve lighting fallow strength.in previous versions og hook we used near and fov parametes to adjust shadow projection for wider light sources. But you can set it to lower value to get more linear and soften lighting distribution. if set to false then will be used rotation parameter for define sun direction [spot_light_01] type .y. b . g. y. for this light intensity define intensity for this light bound_color r. y.z color r.g. Note . the shadow mask splited into 4 splits. omnilight. Note .shadow_param first_split_distance. last split cover distance from previous split to maximim distance. rot_z .002 [omni_light_01] type . shadow_bias allow to setup bias value to minimize self-shadowing error. z position in scene for this hook object rotation rot_x. This settings greatly affect shadow performance and quality game_control if set to true then light rotation with L(ctrl+L) can be used.for now it still in old format.b. This parameter needed to perform correct lighting calculation for wider sources. default value 0. every next split cover larger distance. but further it will be redone fov define light cone for this light near define minimal distance at which light start emmit source_radius define source size.define rotation in degrees about global axis x. fov_fade enable light fading by light cone range_fade enable light fading by distance from the light. for physically lighting. rot_y.portions in Photoshop format (0-255). define type of hook object enable – true/false position x. DO NOT set this value lower than 1 or larger than 2. The real value is 2. define type of hook object enable – true/false position x. maximum distance for this scene. z position in scene for this hook object .a intensity for bound volume in Photoshop format (0-255). spotlight. Note for sunlightin used technique CascadedShadowMaps. but this parameters allmost don't affect how light interact with objects. for now it still in old format. Note .a intensity for bound volume in Photoshop format (0-255). for physically lighting. for this light intensity define intensity for this light bound_color r. CustomSkin . shadow_bias allow to setup bias value to minimize self-shadowing error. [fire] .. The main custom shaders are CustomModel. CustomSkin only for body skins. fov. DO NOT set this value lower than 1 or larger than 2.b.g.they use similar texture layout and parameters to perform rendering. The real value is 2. Texture layout (new in hook5) . fov_fade has no sense for omni light type. but this parameters allmost don't affect how light interact with objects. default value 0. g.color r.. b . CustomStatic. CustomStatic for objects that are part of the room.portions in Photoshop format (0-255).txt file attached to object main texture and perform unique rendering for this object. source_curve lighting fallow strength. but further it will be redone near define minimal distance at which light start emmit source_radius define source size. This parameter needed to perform correct lighting calculation for wider sources. But you can set it to lower value to get more linear and soften lighting distribution. CustomModel should be used for cloth items. This shader can or can not use additional textures and parameters described in _pass file. 3.002 NOTE: parameters rotation.in previous versions og hook we used near and fov parametes to adjust shadow projection for wider light sources. range_fade enable light fading by distance from the light. Custom shaders This shaders we can assign to objects via _pass. Note . hairs and so on. now in normal kind. Default value -1. Glow. glossines. For this 3 shaders and also for _pass data without shader you can use next parameters: cull_mode . 1 cull frontface. Custom skin will additionaly use stage4. .override game cull mode for object. if you will not provide data for cavity you can use only 3 channel texture format to store data for stage3. but further maybe I'll change subsurface shader. Metalness.subsurface use only inverted green channel.read it and learn how to get fine result. in opposite to previous versions of hook. 0 cull backface. Layout for stage4 For now it not fully implemented . 2 cull none. -1 keep game mode. not inverted.Normal map or bump will be used with dependance from parameters in _pass file(see below). cavity are the data from PBR rendering tehnology you can find a lot of information in net . And displacement channel will be used when I will implement tessellation with displace. CustomStatic .mostly for sky dome objects. cast_shadow . these objects are not skinned(weighted) and have a static transformation in scene.power for main texture color for backfaced polygons. 3. for now it adapted from old shader and will be enhanced further. relief_mode .this shader have unique calculations and assigning to non-skin object can produce abnormal result.multiplier for main texture color for backfaced polygons. also this object will be rendered with sky_intensity value from environment section of level_definition file. Note: Don't assign CustomSkin shader to object that are NOT a skin . Unique skin parameter: tessellation_level – enable/disable tessellation. hook will apply for this texture Parallax Occlusion Mapping. Any value more than 0 will activate tessellation.if set to 0 object will not cast shadow.fx. Note that high value of height_offset_scale require more steps.1. Default value in hook5 is 1. EyesPass . for now this parameter works only for skin. shoes. CustomModel . this more advanced and more expensive technique. it use additional textures provided via pass file and use parameters from section rendering_settings in main11. Will be more shaders in future. Default value 1. which modifyed via ActiveMod folder. allow make the relief of surface more noticeable height_offset_steps – if this value not a 0. alpha_threshold – allow to define at what value of pixel alpha it would be discarded.shader for eyes.this shader for cloth. Further will be more property in pass file.define what will be used bump mapping(use stage2 channel A) when value is 0 or normal mapping ( use stage2 RGB) when value is 1. Has no additional parameters or textures. backface_curve . . bumping_scale .this shader for objects of scene(room). for bump mapping you can also provide bumping_scale property. height_offset_scale – enable simple bump offset mapping.scale bumping amount if relief_mode is set to 0. which allows to make relief more defined.this unique shader dedicated specially for skin. hairs and so on. With this shader object will be rendered with special technique which prevent this object from affecting by ssao and light/shadow calculations. Default value 1.backface_mult . CustomSkin . Other shaders BackgroundPass . example if you main texture named "metal_roof. 1. Properties of hook object section: type – define type of hook object. To create such objects you need use simple program H5MConvertor.dds". 0. s_z – define scaling transform for hook object Example of hook object section: [object_section_name] type = static style = object file = _hook5data\objects\futuristic\futuristic_car. Create model in any 3d editor 2.bmp" and no normal map name in model hook will try load "metal_roof_norm. 0 scale = 1.dds".h5m position = 2. full path to file equal to ActiveMod_path + file position x. s_y. -4. 1. rot_y.dds" for specular texture if no map_Bump texture path in model hook will try load texture "color texture name" + "_norm. 0. hook5 allow to users insert into scene additional objects via level_definition file. for now only one style is allowed – object file – relative path to h5m file. example if you main texture named "metal_roof.y.3. Creation steps: 1.as specular texture of model map_Bump . Create a section in level_definition file for particular scene to insert object to scene H5MConverter you can find on hook5project patreon page.dds" for normal map . 1 hook will threat textures of obj format: map_Kd .as normal map for model if no map_Ks texture path in model hook will try load texture "color texture name" + "_spec.1.define rotation in degrees about global axis x. 0. which allow to you convert model obj file into h5m file.static style – define drawing style for object.z scale s_x.bmp" and no spec map in model hook will try load "matal_roof_spec. rot_z . y. Use H5MConverter and resave your model to h5m format 5.as color texture of model map_Ks . 0 rotation = -1. for simple model use type .2. which are supported by hook. Assign textures for model 3. z position in scene for this hook object rotation rot_x. Hook objects Like in previous version of hook. Export model to obj format (note: villa 1 unit = 1 meter) 4. 1 bound_color = 128.Hook object Physbound type .define rotation in degrees about global axis x.load level_definition from it last saved state Hook settings window .allow to choose what kind of object can be selected by Left Mouse Button DblClick SAVE LEVEL .0 .y. 1.allow to you show/hide level_definition settings (see below) selection mode . 0 rotation = 0 . rot_y.z size s_x. y.0 size = 1. s_z – define size of the physbox bound_color color for preview in Photoshop format Example of physbound section: [some_object_name] type = physbound position = 0. 0.should be "physbound" position x. HOOK IN-GAME GUI Main window Described kind of gui windows can slightly differs from actual window in game graphic .allow save changes in level_definition RELOAD . 255. z position in scene for this hook object rotation rot_x. 120 4. 0.allow to you show/hide main hook5 settings window (see below) level . rot_z . s_y. fx (described in 1.you can manually input numbers in slider control . All control elements are simple to use.). Level definition settings window .This window allow you adjust most of parameters from main11. so do not require additional explanations. one thin you shlould know .use CTRL + LMB CLICK to switch slider control in input mode. txt Scroll ENVIRONMENT allow you adjust properties of section environment from level_definition.Scroll INCLUDES will be present only if you use includes in your level_definition.txt Scroll SUN LIGHT allow you adjust properties of section sun_light from level_definition Hook object properties/manipulating . physx3_x86. This version require Physx installed on your PC. physx3common_x86. After object are selected you will see translation manipulators . Also when object selected you can change it transform with using manipulators. note: small green box in rotation mode show positive Z direction which are fron of object or direction of spot light note2: omni light has no rotation functionality . Translation performed in global world space. The scaling performed in local object space. this files do not distributed with hook files. The rotation performed in local object space.Content of this window will depends from type of object that are selected.equal scaling. So basic idea of ragdoll hairs: create ragdoll skeleton which will represent main hair strands. you can find it on hook5project patreon page. where all bones will be linked to "root" bone.it has no sense for this type of light PhysX Hook5 full version support physx features like ragdoll hair. all other selectors allow you scale particular dimension of object. To connect physx data to some mesh in game I decided . also use middle button to rotate object to desired orientation. also you should place three dynamic libraries to your game binaries folder . they will never changes.use middle mouse button to drag it to desired position.dll. then get transformations for all bones and render ordinal skinned mesh with all these transforms. physx3cooking_x86. big yellow box in center allow you scale all three dimension in the same time . If you will hold CTRL then manipulators will be switched to rotation mode.dll.dll. then asign to that bone position and rotation of the head. If you will hold SHIFT you will turn manipulators to Scale mode. then allow to physx calculate positions for all other ragdoll bones with respect mass and inertia. Note that selection_mode in main window allow you to choose what type of object can be selected from scene by mouse dbl click. h5s physx_model = some_model_part. correct all transforms and only after create objects that will represent ragdoll skeleton. when game will load some texture and this texture will have _pass file with provided physx data . like bones and joints.dds physx_rig = R9hair047. . The second part of hair physic simulation is render a mesh that will represent hair.I will load this data and link with this texture. later at some moment I can read all this data from this file and recreate the same ragdoll system when game is runing. normalize skin weights for vertices and so on.I will not render this object. There is example of _pass file that allow me link texture and physic data: [pass] name = PhysXModel stage2 = _hook5data\hairmaps\hair_normal_map.h5s What is RepX. PhysX plugin for 3dmax allow me create skeleton and define physic properties for all skeleton components.RepX physx_hair = R9hair047. What is h5s. I had to write a some kind of parser to read data. To store skinned mesh I writed script for 3dmax. which in time of export also perform calculation of Tangent-Binormal space for every vertices. h5s . and then export all this data in one file RepX. which take most part of time. when game will try render object with this texture . But there is some problem PhysX and villa use different coordinate system. mesh should be skinned with all this bones and this is a difficult part of task. To mesh parts can move with bones."_pass" file. so I can't just load this file.is simple file format that allow me store skinned mesh data in most effective for game kind. I will use object transform to run physic simulation and then will render my own mesh with using result of simulation.use the same scheme as always . Perform skinning with all this bones 5. . this sections linked to main body bones and represent by himself ordinal game object. <------this is place for marker sections TTransform :local_949 . }. When game will create this objects hook will create physx collision object associated with particular section. Define properties for every component of skeleton 4.bs: STransform :local_36 . We need that bones of body notify physx to create collision objects and insert it in physx scene... . 2. { . Export ragdoll system to RepX 6. use physx plugin to asign dynamic rig modyfier and create joints 3. Create hair model or stole it somewhere.bs additional sections. Export mesh to h5s 7. later physx simulation will be performed with respect to this collision objects The marker sections you can paste between this sections in your body##. Create ragdoll skeleton. Create _pass file for texture of hair which will be replaced. . { .So steps to create hair should be like: 1... Object. To perform this you need insert in each female body##.. write all desired data Enabling collisions There is additional steps that should be performed to allow physx calculate collisions when simulating hair movements..Name "Sbody_mesh_group"... }. The list of additional sections and step by step instructions you can find on hook5project patreon page. Object.Name "root_main_group". .