Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

156 Neutral

About BlackSeeds

  • Rank

Personal Information

  1. BlackSeeds

    What do you use for prototyping 3D games?

    For prototyping, I'd totally recommend unity3d it does everything you asked for is free and cross platform. I used unity3d at work for prototyping a number of games, it is more than good enough to make a full commercial title games, but we have our own engine and we were just using unity to thrash out some ideas for speed focusing on game mechanics. It's all 3d but you could make a 2d game in it although it is not specifically designed for 2d.
  2. BlackSeeds

    [DirectX 10] Multiple ligths

    The method you suggested originally is still a feasible idea, just because you want multiple lights doesn't mean you have to use a deferred renderer, the other person said for 5 lights you would have to render a mesh 5 times that's not true at all, you can do multiple lights in a shader like you suggested, that person was explaining multi-pass lighting which is a pretty old technique and was used when hardware lights were limited so you could get more lights than you were allowed in hardware. Why the hell you you would render a mesh 5 times for 5 lights? that is totally insane. I have implemented both deferred and forward renderers before, at first I thought deferred was great until I realised that actually the performance benefits weren't as good as I had thought they would be. Deferred rendering introduced some new problems to address : no hardware anti-aliasing, its a bit restrictive in terms of having multiple material types, large fullscreen floating point gbuffers can be pretty hefty in terms of memory consumption (although there are methods to reduce this as much as possible like reconstructing position from depth) and deferred rendering doesn't handle transparent objects well. Have a look at the pros and cons for each and what you want to achieve, I just felt the advice you had previously been given was completely biased towards deferred rendering, and explained forward rendering incorrectly.
  3. BlackSeeds

    Return value from Shader

    I've done a similar method to how you describe before, I rendered depth into a render target, locked the texture (this was d3d9) and read the texture at the current mouse coordinate from the mouse x,z and depth you can reconstruct your world space position using un-projection. I certainly think this is a viable option for picking because your not continually reading values from an RT, your just doing it on click. but if you want to continually do that each frame you might want to look at other approaches, why are you determining mouse position in world space? for picking or for something else?
  4. BlackSeeds

    Return value from Shader

    If you have a DX11 card you could use direct compute to do your GPU calculation as this is what it was designed for. You could issue hardware occlusion queries like the histogram average luminance method used in HDR rendering. Some clever work with a shader and occlusion query could get your data back in a nice efficient manner. Reading data from render target is slow, but depending on what you want could be suitable for your needs.
  5. Number of ways you could do it, make another matrix CPU side, that is the same as matWorld but without scale and translation so only applying any rotations when u make the matrix. If you make the translation portion of the matrix (0,0,0) then you remove translations and can still multiply with a 4x4 matrix... to remove scale from the matrix I'm not 100% sure how to do that with just the matrix itself... if you have formulated matWorld from something like rotation * translation * scale, you can multiply with the inverse of the scale matrix and that will remove the scaling bits. but then again if you've done that you can just pass the rotation matrix in directly. I usually just make a 3x3 matrix and pass to the shader, because it saves reconstructing a 3x3 from a 4x4 for each vertex or each pixel depending on where your doing it. I use 3x3 because my Normals are 3 component...there is no need to have a normal with a W unless you want to use the W component for something else or pack in some info like handedness,
  6. If your multiplying with "matWorld" does that contain translation? you should only multiply a normal by the upper 3x3 portion of a matrix so it is only affected by rotation.
  7. BlackSeeds

    Multitexturing using ONLY the Shader

    as huntsman said you still need to use glActiveTexture to bind multiple texture units, if its registering all the gl extention functions thats the problem why not just use glee or glew to manage extensions then you get functionality of all extensions and you dont have to bother messing around doing it manually.
  8. It's also important to understand that to achieve "realistic" graphics, it's not just down to shaders, shaders play a part but you also need high quality art such as models and texture work, good level of detail and culling methods to allow you to push your artworks polygon count, texture sizes and number of texture stages. Also things you may want to do outside of shaders to precompute certain effects (pre-computed radiosity transfer and the like) can be taken into account. Obviously all of this needs to be highly optimised to allow you to accumulate all the various layers and effects to create "realistic" looking scenes running at interactive framerates. It is my opinion that good artwork and average tech in an engine can look a lot better than the best tech imaginable and shoddy artwork... so dont put it all down to just the shaders but yes shaders are a good step :)
  9. I find this site KluDX useful for enumeration of GPU capabilities, for GPU's I don't have. here is the capabilities of your card Also you can use glGetString(GL_SHADING_LANGUAGE_VERSION) to get the version of GLSL supported, you may also want to check what GL version it supports that site says 1.2, so thats fairly old and you may be using extensions it does not support or something. I would ensure anything you create be it VBO's, FBO's, shaders or whatever check if they succeed when creating them.
  10. BlackSeeds

    Normal maps in deferred pipe

    I just multiply the normal map value in the pixel shader by the inverse TBN to get my normal in world space. I dont think there is any way to save doing the multiplaction in the pixel shader.
  11. BlackSeeds

    Too many extensions...

    Quote:Original post by Tom Backton 2. There are still many vendor-specific extensions that may never become useless. For example, NVIDIA'a multisampling control extensions. Unless all vendors support such control (taps, samples, etc. I don't remember exatly how it works), NVIDIA's extension will always be useful to me. Should I look for such extensions? They let me take advantage of vendor specific features when glGetString(GL_VENDOR) gives the right vendor name... I think its probably best to directly query if the extension itself is supported, say for instance you use an extension that works on Nvidia 8800 and above, and somone comes along with a geforce 3 that might not have it, just because the name is nvidia doesnt mean the extension is necessarily supported, Likewise some NV extensions are supported on ATI cards too. You can directly query all supported extensions of a GPU and then just check what capabilities are availible.
  12. BlackSeeds

    Camera for an 3D Level Editor

    Yeah I assumed your editor would just be generic 3d world editor, which I have made before. I found my camera system and object placement nice to use so I'll just detail how I do things. middle mouse button and drag, rotates the camera around the target point. shift + middle mouse and drag to pan the camera mouse wheel to zoom in and out left mouse to place / select / move objects depending on edit mode, and what your clicking on. I also added shortcuts, (T, F, L) to quickly switch to top, front, left and views like in 3ds MAX, holding shift snapped to the opposite view (ie shift + L = right) and using cursor keys up down left right, moved the camera in first person mode from its current position. I also had some nice mechanism to "target" the position or central position of a selected object or objects for focusing on work area quickly. I found this system nice to use and so did my artist friends who primarily use 3ds max. I think your main issue is obviously the swap between "graph" and "camera" mode...imo there should be no such thing as camera mode, and the camera controls by there constantly. possibly have camera settings mode to change the camera type (orbit, first person, third person, etc). But i think you just need to integrate graph and camera mode into 1.
  13. BlackSeeds

    Camera for an 3D Level Editor

    I think camera choice depends on the type of editor you are making.. but as Nanoha said there is no reason not to implement multiple camera modes, sometimes you need different camera mechanics to aid you creating a level..a free FPS cam is often useful, as is an actual in game style camera that matches the mechanic of your game camera to get a perspective of the level from the games point of view without having to save your work, do any build process and load it in the game. I think games like little big planet, and modnation racers are good examples of in game editors with very simple intuitve control systems because they are designed with user generated content in mind.. The orbiting camera is how 3d modelling packages and other comprehensive editors do things, so they are aimed at more skilled users who are confertable with this camera system. what type of levels are you you creating here?
  14. Its hard to know what exactly the display list does when you compile it, but it can make optimisations to your OpenGL calls, its extremely common for display lists to beat VBO's in terms of speed although only marginally... The main thing is display lists are now deprecated, and dont give you much flexibility. Using dynmaic geometry in display list isnt suitible because of time taken to compile a DL, and hence during compilation any redundant OpenGL calls could be removed possibly the vertices could be indexed better and all sorts of other driver optimisations, in addition to that you may find perfromance of a DL varying from GPU to GPU because of the drivers and how the DL is compiled this a common scenario and many people have noticed this before.
  15. BlackSeeds

    Tangent space with rotating meshes

    You dont need to recaulculate the tangent each time since you already know the tangent in local space just multiply the tangent with the upper 3x3 part of the model matrix like you would with the normal.
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!