Should SIMD be used by people who are new to game development?

Tsvetan
  • Should SIMD be used by people who are new to game development? Tsvetan

    I have been learning game development, using C++ and OpenGL, for about 4-5 months. Before that I used to program in C# and the .NET platform(about a year). So, I consider myself new to game engineering and software development as whole.

    Recently I read about SIMD math. I found it interesting and started wondering if it was good to use it in my math library. But, considering that I have so much to learn and I haven't even laid the foundations of my knowledge of game development, should I explore it in depth and start using it? Or should I wait until I really start to need it?

  • This is really a matter of opinion, but I think SIMD can safely be postponed. It'll probably be a long time before you're doing so much math on the CPU that you'll need it. Besides, there are probably vector/matrix math libraries out there that have SIMD built-in already, and if you use one of those, it should "just work" and you'll have very little need to dig into the details.

  • SIMD in and of itself is straightforward to use, provided you are even mildly experienced with C++. The problem here is that not every problem lends itself to SIMD calculations. You need to appreciate that using SIMD to save time naturally assumes that you have a set of operations all of which are the same in nature (eg. div, sqrt) and all of which may be executed in parallel. Given the nature of real-time simulations (games), I would furthermore assume that there would be some degree of repetition of these set-operations several times per second for it to be worth considering using SIMD ops at all, as well. Two examples are:

    • Ray packets in RTRT (real-time raytracing)
    • Pixel operations (as found on the GPU which is massively parallel -- originally more SIMD but things have moved toward MIMD)

    SIMD is never useful where you need the results of one operation to calculate the results of the next; performing physics stepping for an entity is an example of where SIMD would not be useful.

Tags
c++ opengl mathematics simd
Related questions and answers
  • if the warning I am getting is the problem or if there is something else. Also, this is when the configuration being used is "Dedicated release", but I have also tried with "Dedicated Debug". It is my... strings/english.lang ----- Initializing Sound System ------ sound system initialized. -------------------------------------- game using MMX & SSE & SSE2 & SSE3 for SIMD processing enabled...I am trying to build and run Doom 3 from the open source release in order to better understand how the engine works. Unfortunately I am not able to run the game from the binary I built. I just get

  • Lately I have been working on a game that i plan to make online. I have used different libraries to make this game as far as i could, but I feel that I should rethink on how Im sertting this game up, so I planned to start over. The libraries that I have used are SFML, OpenGL, and Bullet Physics, along with GLM to load the models. But the problem is that the 3D graphics arent working with the Physics correctly... So my main question is: What would be a good combination of libraries to make an online game with? Im sure that many people have good combinations of libraries for making a game

  • ) is therefore highly wasteful. Then again, making each entity state a singleton hardly seems appropriate. What do you suggest I do? (The same can be said about game states, so whatever the solution to this is, I guess it can be applied to game states as well.) 2. The state of the entity sprite. Most of the time, whenever the state of the entity changes, the sprite that is used to represent it must...This is the first time I'm trying to make a 2D game, so I'm having quite a few difficulties in getting things right. Right now I'm trying to figure out exactly how the entity state machine should

  • I have got some problem in my OpenGL game. I am using bullet physics and I want to achive quite simple effect - I want one object (a sphere) to roll and hit another (box) which will fall down. I have got almost everything but still I have got some errors. When the box is hit it is rotating almost how I would like to. Well, almost means that when ball hits it it falls and rotates however there are about 20 degrees left to the ground. It isn't stoping on a ball because the speed is so high that it is throw away and after a while it "meets" ball This is my code for objects (including floor

  • sort of designs other people used to overcome them, or would use. For a little background, I started working on it in my free time last summer. I was initially making the game in C#, but about 3 months... areas of concern I have and wanted to get some opinions on the proper way others have solved them or would solve them. 1. Cyclical Dependencies When I was doing the game in C#, I didn't really have to worry about this since it isn't an issue there. Moving to C++, this has become a fairly major problem and made me think I may have designed things incorrectly. I can't really imagine how to decouple

  • from it. As an added touch i have made it so after you collide while traveling down the randomly generated map (or rather as the walls move uppward while your character stays put) the X chars you've...Alright so i'm making a vertical side scroller where you are an '8' character traveling downward while avoiding my randomly generated walls (the "generation" function) on the left and right sides... and traveling throug it. This is due to some odd reason for the "numb_collisions", which is used to count how many collisions have occured since initial collision (if it's 0 it means it IS the initial

  • I am making a small game for a course in my school and was planning on using QT to build it. I have worked with pygame[last year] and turbo c++[about 5 years agao] to make games, small easy stuff. This time I am planning to make a game that supports multiplayer over lan, the game idea is simple however, information about the game is here http://bit.ly/mOKzuY I was hoping to know from you all, if it is a good choice to use QT for this! I am totally new to QT, but a decent c++ programmer. Also what problems would I encounter when it is a LAN game, for a start I just want it to support 2

  • a decision which Components to register (and how to organize them). For example, GameSubsystemRender can register Renderable Components. pro. Components know nothing about how they are used. Low... Components. 3: Component registers itself in GameSubsystem(s). We know at compile-time that there is a GameSubsystemRenderer, so let's ComponentImageRender will call something like... GameSubsystems) can implement registerComponent(Component*). pro. Components and GameSubystems know nothing about each other. con. In C++ it would look like ugly and slow typeid-switch

  • I'm currently selecting a C++ math library to use for a project. There are several questions here and on SO concerning the 'best' library available and many answers with different suggestions, but I... on in the future. My problem is that due to being fairly new at this, I'm not entirely sure what those needs will be yet. Aside from the points that I can think of listed below, and assuming that I will only test libraries with a suitable license, what other commonly used features should I test/look for before making a selection? Matrix operations - including addition, subtraction, multiplication

Data information