354 reputation
216
bio website stevenlu.net/tm.html
location Pittsburgh, PA
age 26
visits member for 4 years, 2 months
seen Apr 18 at 19:29

Play a multitouch HTML5 Tetris clone -- don't worry, keyboard will also work great: http://htmltetris.com

A huge fan of tmux, and I use Sublime Text and (more often) the indomitable Vim.

I have some special experience with:

  • too much JavaScript
  • too much CSS
  • OpenGL
  • topics related to animation via simulation, primarily in 2D (rigid/soft-body physics, kinematically-enhanced shader techniques)
  • low-level application security (the stuff that nobody ever has time to dedicate to finding their app's vulns)
  • HTML5 gamedev (It's ready for tech demos, not all that ready yet for important products, but hopefully will be quite soon, and failing that, eventually)
  • C++ template metaprogramming, and clang c++ metaprogramming (hint: one of these will erode your sanity)

Apr
5
comment Decoupling rendering pipeline (for UI responsiveness): Multithreading and multiple contexts?
Hmm, let me try explaining another way. It usually takes a lot of development effort to make a game or other graphical application always scale levels of detail to maintain a desired framerate baseline. As a not-quite-alternative I wanted to know how feasible it is to just "run another thread" that's solely responsible for the user interface rendering, whose sole purpose is to maintain control responsiveness. If this could be done easily and transparently it makes for much improved usability at essentially no cost to the developer. Turns out, drivers today make no guarantees to support this.
Apr
5
comment Decoupling rendering pipeline (for UI responsiveness): Multithreading and multiple contexts?
Well sure, it's not ideal when things to slow down like this, but my idea was basically that it would be nice if I had two rendering contexts, one that dealt with really simple and fast rendering tasks (UI) while the other focuses on something more challenging. Basically the way that many RTS games these days get around the limitation (explained by Nathan Reed) is to use the default cursor which is being handled by the operating system at a driver level so the whole thing is separated from the hardware-accelerated graphics.
Mar
10
revised What is a good way to determine if a vector is between two other vectors in 2D?
edited title
Dec
28
accepted render with const depth value
Dec
28
comment render with const depth value
Yeah I hadn't thought it through and realize i can avoid setting gl_FragDepth (not that I can even do that on a ES 2.0 context as no Apple devices even support EXT_frag_depth). This is interesting that there is a lot of implicit stuff happening based on the glClear. I suppose you're saying that the tile-based architecture will allow me to render my skybox first and I will still gain optimization such that hopefully it can skip some skybox fragments if some geometry to be rendered later covers those fragments! I'll try to render the skybox last to explicitly leverage depth test.
Dec
28
comment render with const depth value
According to sunsetlakesoftware.com/2011/05/08/… doing impostors is NOT simple when only on ES 2.0 on account of no EXT_frag_depth. Luckily I can adjust my full screen quad geometry for the skybox to get appropriate gl_FragCoord.z values.
Dec
28
revised render with const depth value
added 174 characters in body
Dec
28
revised render with const depth value
added 174 characters in body
Dec
28
asked render with const depth value
Dec
26
awarded  Excavator
Dec
26
revised Implementing a skybox with GLSL version 330
spelling error. Then stackexchange made me make even more edits because my spelling fix was too small.
Dec
26
comment Implementing a skybox with GLSL version 330
Just a helpful note to folks, GLSL ES 1.0 (used for GL ES 2.0) does not implement inverse()
Dec
26
suggested approved edit on Implementing a skybox with GLSL version 330
Dec
22
awarded  Autobiographer
Sep
3
comment problem loading Collada DAE model using Assimp in OepnGL 4.4
Well, then Scene 0 contains 5 meshes. Looking at it I think I see the outline of the square box around the wheel. Maybe the 4 wheels are overlapping on each other, so you actually are rendering all 5 meshes, but inside the wrong coordinate space. I reckon there's some transforms specified in the COLLADA file that you're not reading and applying.
Sep
2
awarded  Citizen Patrol
Sep
2
comment Is it reasonable to use a 2D texture as a lookup table in GLSL
Have you tried setting the texture sampling to GL_NEAREST for the texture? You just want to explicitly disable the bilinear filtering
Sep
2
comment problem loading Collada DAE model using Assimp in OepnGL 4.4
I think you're only grabbing the first item out of the hierarchy which is why you only get one wheel instead of all 5 parts. I definitely came across a similar issue when I was working with assimp earlier. Maybe check if you're looking at all of the scenes. there might be 5 total scenes.
Sep
2
comment Who should handle animations when game logic is separated from rendering?
This almost begs the question to me of why there even needs to exist separate rendering and logic threads at all in a game that is tile-based. This is a huge amount of added complexity to keep track of.
Sep
2
comment How do I implement time scaling?
@Phillip, determinism is lost among other things when the simulation is infected with stuff like how long it takes the hardware to process something. This is how you do it properly: gafferongames.com/game-physics/fix-your-timestep