54

Because different generations of the same architecture can have different instruction sets. For example, Streaming SIMD Extensions are probably the best-known x86 instruction set, but yet, and despite there just being one x86 architecture, there exists SSE, SSE2, SSE3, and SSE4. Each of these generations can include new instructions that provide faster ...


40

I think a lot of the answers miss an important point: you can write apps that access hardware directly, but not on modern operating systems. It's not just a time problem, but a "you don't have a choice" problem. Windows, Linux, OSX, etc. all ban direct hardware access to arbitrary applications. This is important for security reasons: you don't want any ...


37

Maximus's answer is correct, I just want to give another piece of the story: The hardware itself changes in a way you need to change how you code, regardless of newly introduced instructions. Increased or decreased amounts of cache means you need to worry less or more about cache optimization/cache invalidation being issues. More cache means with small ...


36

Is that only a matter of code optimization? There is indeed an optimization part in this. The more programmers get used to a console hardware, the more they learn how to squeeze graphical quality into it. But it's far from being the only reason: Early console titles are developed on evolving hardware and SDKs, so it's hard to get the most out of a ...


32

It's not the app's responsibility to ensure the GPU doesn't overheat, and it's not the app's fault if it does overheat. If the GPU doesn't have proper cooling, then yes, running a 3D app can heat it up to dangerous levels. I don't know why your app does it and Crysis doesn't, but it means the card has inadequate cooling, and/or it has been messed with (...


28

Practically its necessary, yes. It's necessary because unless you want to spend years writing what is essentially driver code for the multitude of different hardware configurations out there, you need to use an API that unifies against existing drivers written by GPU vendors for all popular operating systems and hardware. The only realistic alternative is ...


24

It has happened in the wild. Starcraft II in 2010 had a problem where it had an uncapped framerate on menu screens placing an odd load on graphics cards, destroying cards from some vendor with insufficient thermal protection. Design and manufacturing flaws in the GPU itself can also lead to the card dismantling itself under load. G84/G86 mobile GPUs had ...


13

Do game developers plan to start small on a new hardware, to have space to evolve while creating a series of that game? They most certainly do not! When I first joined the games industry, I asked a producer from [giant publisher you've definitely heard of] this very question. He told me that every console game his company developed used 100% of the ...


10

Since Consoles pretty much have one specification. And not like PC where you have tons of different variations. Developers can optimize their games better. But this doesn't mean it will do space magic in the long run. It will reach a cap. ( currently the 360/Ps3 have 512 mb in total, which to many developers seems to be an annoyance) Consoles are fairly ...


9

Your question is much more complex than what you wrote. I would say the general question is "can software break hardware?", and the answer to that is a definite yes. Mind you, not all hardware can be theoretically broken via software commands, but eventually, what software does is send electrical signals to very delicate hardware components. Usually, the ...


9

New hardware generally just offers the ability to do more than before. Most graphical improvements come from new techniques, new optimisations, and better art. It's worth knowing that the 'new' techniques that get used are rarely new - they are typically 20 year old techniques that previously were too slow for real-time rendering. These typically get ...


8

APIs like OpenGL or DirectX are partialy implemented by the operating system and partially implemented by the graphic driver itself. That means when you would want to create your own low-level API which makes use of the capabilities of modern GPUs, you essentially need to write an own graphic driver. Making sure that your driver works with all common ...


6

Boot your PC into MS-DOS. Then, using your copy of the PC Game Programmers Encyclopedia, you can write directly into the card's VESA registers and into video memory. I still have the code I wrote 20 years ago to do this and render rudimentary 3D in software. Alternatively, you can just use DirectX; it's a really thin abstraction layer, and also lets you ...


6

Google has done some analysis on this: http://browsersize.googlelabs.com This link has been deprecated, and instead, it will be available as a feature in Google Analytics. I have taken a screenshot of the front-page sample, just in case: As stated in the about link: Google Browser Size is a visualization of browser window sizes for people who visit ...


6

This works because texture mapping is a form of both precalculation and compression. The idea is that rather than having to store and continually recalculate all of the info needed to derive the end result per-vertex at a very fine level of tessellation, you instead encode it into a texture map (and at the most basic level, if you think about it, that's all ...


6

Endianness matters when it comes to game consoles. The Wii, the PS3, and the XBox 360 all run big-endian, while all major desktop computers (as of the date I'm writing this answer) run little-endian. If there's a chance you'll want to compile your code for one of those game consoles someday, or if someone releases another popular big-endian desktop machine ...


5

Fabian Giesen's series of blog posts A Trip through the Graphics Pipeline is the best place I know of to get an under-the-hood view of how modern GPUs work, and what APIs like D3D and OpenGL are really doing for you.


5

There is literally no good option other than testing on a range of target hardware. Simply testing on slower hardware isn't enough. Older cards are often on different driver series, meaning that they support a lower version of Direct3D or OpenGL. Cards of similar speeds but from different manufacturers will have different behavior. The behavior can differ ...


5

Scene 2 is cheaper. That's why bump mapping, normal mapping, parallax mapping, relief mapping etc where invented in the first place. You would need huge amount of vertices in order to reach the same amount of detail. Note however that with the advent of hardware tessellation, that too has become possible recently, though you still don't have the hugely ...


4

The other answers answer your main question quite nicely: technically, it's possible, but in practice, if your goal is to broaden your customer base, you're actually doing the opposite. While wasting a huge amount of work on supporting the thousands of different hardware and OS configurations you need to support. However, that doesn't mean you have to be ...


4

In summary: Theoretically you can, but it's unfeasible, and you won't get any advantage. The limitations APIs have today become less every day, you have CUDA and OpenCL and shaders. So having full control is no more a problem. Fuller explanation: Answering this is a boring yes. The real question is why? I hardly imagine why would you want to do this other ...


3

GPUs incur a large amount of overhead when triangles are too small on-screen. There are two main reasons: There are fixed costs per triangle, associated with setting it up to be rasterized and pixel-shaded. For example, each triangle must be clipped to the viewport, edge equations for rasterization must be calculated, and plane equations for attribute ...


3

I think it strongly depends on the scene rendered and shaders used. It's usualy better to use low-poly geometry and add as much detail as possible via textures and pixel shader operations. But you have to have two things on your mind: GPU have to process all the source geometry (at least to the point where the position in view-space is determined, then some ...


3

If you want to stick with the hardware route, you may want to invest into a Dual-PCI motherboard specifically for this scenario. In my previous setup I had a GTX970 and an older GT640. Switching between GPUs will require you to reboot, go into BIOS and select a primary. I've since dumped the 640 in favor of the built-in HD4400 in my i7 4770K. Check your CPU ...


3

The short answer is: you can't right now. (possible work-around below) Newer GPUs can do preemtion (context-switching) to prevent the entire machine from freezing when running long GPU programs, older GPUs don't support this. Your OS also needs to support this as well as the specific drivers. For example Windows 8 WDDM 1.2 requires this support in drivers ...


2

Even with VSYNC off, many games can fail to hit even 98% GPU utilization. The more actual gameplay they implement, the fewer frames they can stage and the more likely the GPU will go underutilized. Good multi-core optimized games can get significantly closer to 100% GPU utilization, but generally gameplay logic keeps the CPU busy enough with other tasks that ...


2

Alfonse Reinheart's post in this thread (#8) should shed some light. When you boil it down, the answer is "there's no such thing." Quadrilinear sampling is simply the term used for applying a linear sampling (GL_LINEAR_MIPMAP_LINEAR in OpenGL) to a 3D texture. You can almost argue the answer is "yes" since linear is at the hardware level and it's simply ...


2

Your ideas don't just sound dumb, they also sound quite dangerous. Remember that a player with a VR headset can not see anything of their real surrounding, which greatly increases risk of injury. So safety always needs to be a concern. What you need (or rather your players need) is an omni-directional threadmill. The floor of this contraption can move in ...


2

Even beyond gross changes like support for new instructions, microprocessor manufacturers are constantly modifying their designs to improve performance, and every new design can have different relative performance for each instruction or technique. Maybe you wrote some carefully optimized branchless code for the Model X, but the Model Y has an improved ...


Only top voted, non community-wiki answers of a minimum length are eligible