# Alundra

Member

895

2316 Excellent

• Rank

• Interests
Programming
1. ## Fifth Engine

Haha, awesome
2. ## Reducing amount of animations in game with procedural solutions

You can compute the angle using atan2 or dot product which will gives you an angle in [-PI, +PI]. Using this angle you can select the 2 animations and then compute the blend factor of the two. Mirroring is a tricky thing, you have to set the mirror bone + set the mirror axis, mirror the quaternion using that.
3. ## Reducing amount of animations in game with procedural solutions

For that you can simply have 4 animations : N,S,E,W and then do a blend by direction. For that you can do mirror of animation, but it's a tricky thing to have it working and you also need to do a mirror bone setup to set each mirror bone.   You can do a masked blend to animate the bottom part and animate the upper part, simply combine the pose.
4. ## An array of array of int type

Good point, I simply clicked on the home page and answered.
5. ## An array of array of int type

std is the namespace used for the standard library of c++. Maybe are you doing : using namespace std; If the answer is yes, then I hardly recommend to not do.
6. ## An array of array of int type

it's not clear to me so 3 options : Array of array of int â€‹std::vector< std::vector< int > > Array of array of int* std:vector< std::vector< int* > > Array of array of array of int std::vector< std::vector< std::vector< int > > > If the size is fixed you can simply do : int* array[10][10] or int array[10][10][10]
7. ## Soft Particles Vanishing in the Distance

You take the depth from the depth map then you put this value in the "DepthValue" param of this function and that converts the value. float depthFromMap = DepthToViewZ( tex2D( DepthMapSampler, depthTex ).r ); To render in the depth map you can avoid the pixel shader, simply use the vertex shader.
8. ## Soft Particles Vanishing in the Distance

You can convert the depth from depth map like that : float DepthToViewZ(in float DepthValue) {   return Projection[3][2] / (DepthValue - Projection[2][2]); } You simply have to use the same projection matrix used to render the depth map. Another solution is to simply store the view-space depth in a render target, but since it's already stored in the depth map, better to use it.
9. ## Updating transformations in the possible presence of scene graphs

I don't understand this problem of relative transform, since the game object (or actor or scene object or entity ....) has the local transform, it contains a pointer of the parent, so you compute the relative transform with the current parent and when you change the parent you update the local transform. You will only win to move to a component based system if you are not already and then you can have a script component which contains a reference to one script. But you can also do all without script and later add a runtime compile, it can be seen as c++ script at the end.
10. ## Updating transformations in the possible presence of scene graphs

The dirty flag is something still used nowadays, you have a state to know if local space transform, world space transform or world space matrix needs to be updated. Since the flag is checked then you don't update the transform twice, when you do any update on the transform of the object, you have to set the flag to "needs update" correctly. The object store internally local space transform, when it has no parent, the local space transform is the same as world space transform. About the scene, you can have flat array and move the pointer of the object when you add child/remove child. Another solution is to have flat array for rendering and a root object (or array of root objects). Using the second solution, you update from root to children, the update is not twice. Using the first solution you simply for loop the flat array, the update is not twice.
11. ## [PBR] Fresnel fade out

Ok, I see here page 78 it's explained and also says it comes from Schuler in Shader X7 : http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr_v2.pdf Apparently it's because these area are too small for the shadow map so the cavity map is used there.
12. ## The Effectiveness of a Mesh manager?

The solution said by Hodgman is the cleanest, when he said transform he speaks about the world space transform. You can combine all the meshes without any nodes or keep yout frame structure which is a node structure, I prefer the term "Node" than "Frame". The good point of a Node structured mesh is you can animate bone an geometry at the end (to me it's more clear "Geometry" than "MeshContainer").
13. ## Resolution scale, good thing ?

They create the render target on the fly if not one is available for the asked size using a render target pool ? Is it ok to downscale/upscale using the hardware filtering ?
14. ## Safe to say all are in little endian nowadays ?

Yes, I do the same, I use a value 1 or 0 for little / big endian and then I have simple inline function which check the endian source to convert using the define of the actual compilation endian. So, basically it's more an issue to check the good endian based on platform because then all others place uses the #ifdef to know the actual endian.
15. ## Resolution scale, good thing ?

Hi, I see resolution scale for example in Quake Champions but also Unreal Engine has, and in forum posts it's sometimes said too. Is it a real must have because resolution scale means very bad visual quality since it's a render target upscaled to the screen resolution at the end if not 100%. Thanks