Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

138 Neutral

About oc2k1

  • Rank
  1. oc2k1

    GLSL hardware skinning

    structs aren allowed as uniforms. Use two arrays for quaternions and positions. But for beginning it's recommend to use an array of mat4....
  2. oc2k1

    GLSL hardware skinning

    the 512 are the minimum that have to be supported. and that are vec4, That is enough for up to 64 matrices. Because some of them are required for other uniforms up to 60 bones are realistic... A small tutorial with shader code:
  3. if a Vertex is multiplied with the gl_(ModelView)ProjectionMatrix it is in a 4 dimensional unnamed space. After the dividing the XY and Z component by W the vertex is in postperspective space (range [-1.0.... 1.0] for XYZ if the vertex is located inside the frustum) This division (and the transformation into screenspace) is still part of the fixed pipline. If you have calculate the vertex screen position in your program add that division after the matrixmultiplication.
  4. Rotating of pointsprites can be done with a few fragment shader instructions. And the size limit isn't a big problem if larger sprites would be clipped away by the near plane.
  5. 1. GLSL can be available in OpenGL 1.5 as extension. (In that case the driver update won't be a wrong idea) 2. No, the required GPU is depend on the shader profile. 3. The old ARB shaders are very limited...
  6. Matrix palette skinning? That won't work without vertex shaders. There are old deprecated extension like GL_ARB_matrix_palette and GL_ARB_vertex_blend, but both are not supported anymore.
  7. oc2k1

    Points Selection

    It is much faster if each point is rendered with another color into the back buffer (16m or 2³² should be enough) After that read the pixel below the mouse with glReadPixel. The opengl picking is not supported in hardware on many cards...
  8. oc2k1


    Pbuffers can be used to render into a texture, but it's recommend to use FBOs (frame buffer objects) instead.
  9. Bumpmapping won't work without tangents (bitangents can be calculated with a cross product. The calculation is simple: v[0...2] vertex position t[0...2] texcoords = (v1-v0).xyz * (t2-t0).y - (v2-v0).xyz * (t1-t0).y;
  10. Lumina is a free crossplatform development environment for GLSL shaders. An ECMA script based language is used for tools and rendering control. Lumina provides maximum flexibility that allows the user to build renderer prototypes for deferred shading, depth peeling or HDR rendering, as well as vertex shader and instancing accelerated bezier objects, skinng or GPU based particle systems. This software requires an Opengl 2.0 capable card (GLSL, VBO and FBO).
  11. oc2k1

    Hardware Skinning

    I've wrote a small tutorial for Lumina. It implements matrix and quaternion based skinning. It won't work without vertex shaders.
  12. The custom clipping planes should work on Nvidia and ATI, but on ATI cards fall back into software if ClipVertex is written. It isn't a problem if ftransform() is used, but is make the vertex shader more or less useless for animations. It is possible to use a varying and discard, to emulate that functionality, but it's much slower (and MSAA don't work on the clipping edges)
  13. oc2k1

    Texture seams between tiles

    Which clamping mode do you use. Try GL_CLAMP_TO_EDGE. If that doen't help, you could try textures with borders or scale the texture a little bit.
  14. oc2k1

    using very large textures

    Splitting in smaller parts makes only sense, if they are loaded on demand in background. Splitting is only for formats important if it's not possible to read a random area without decompressing the full file. For example you could read parts from a DDS file, because every position of a texel in that file can be calculated. With DXT1 you need only 4 bit per texel it requires with mipmaps 8192 * 4096 * 0.5 * 1.3333 = 21 MB texture memory. A 8bit texture single channel texture will use 42 MB. A 32 bit texture 168 MB, so you can store only a single one in Video memory. If you don't use mipmap, use them, or the performance will be much lower....
  15. You have to calculate the light position in (model)view Space. It can be done, by transforming the light positions and rotations with the modelviewmatrix, after the camera is set. You should do this calculations before the shader runs, but it is also possible to pass the camera matrix (calculation in modelviewspace) or ModelMatrix (calculation in WorldSpace) to a shader.
  • 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!