   [NVIDIA/ATI] 64bit texture looks bad on ATI
  I just heared, that my teammate (Whos got an ATI card, I have an NVIDIA) sees heavy artifacts in the lighing. This is a shot of what it looks at mine PC:And here is, what my teammate got:I use a R16G16B16A16_FLOAT rendertarget for my GBuffer positions, and this looks just fine at my PC, but he has to use a R32G3232A32_FLOAT rendertarget to get rid of that artifacts. And he when I showed my screenshot to him, he sayd, he sees the artifacts there, too!?Can we do something against that?EDIT: In Firefox I see that Artifacts in my picture, too!? What the hell?   
  Are you counting on filtering of that float16 texture? Because not all cards support that. According to the card caps spreadsheet in the SDK ATI DX9 cards (Radeon X1x00 and down) don't support it, which NVIDIA cards support it from the GeForce 6 family and up.Regarding artifacting showing for you in various cases, it's possible that your monitor or the OS/drivers colour configuration is affecting how things look. I know that when I first installed Windows 7 things looked different than in Vista due to default profiles for my monitor that the OS installed.   ;  Storing position in 16-bit floats will pretty much always give you artifacts. The precision is simply inadequate for the information you need to store. I actually ran an experiment where I calculated the error for several different ways of storing depth/position in the G-Buffer, and if you have a look you'll see that the error for 16-bit float position is really bad. I would suggest reconstruction position from depth instead, as it uses less storage and it can give you better precision.Also if you're concerned with banding, you need to first make sure that your renderer is gamma-correct. This presentation gives a good overview if you're unfamiliar.   ;  I don't filter that texture, and his Graphics Card is even better than mine. :)(I have a Geforce 8400GS Go). Do you mean, a different contrast or so will make things different?EDIT: Sorry MJP, I was still typing. I tried to reconstruct the Postition from Depth, but I failed. I can't handle those clumsy viewspace lights. Is there a way to bring it into world space again?   ;  Sure, you can reconstruct world space position. I have code for that here.   ;  I've read that already. What do you mean exactly with the frustum corners there? How do I get them? Are that the Corners of the far plane? How can I transform it then?   ;  considering you can use R16G16B16A16_FLOAT to store positioni suggest you do it this way: create R32_FLOAT texturestore Z position in it[in pixel shader] like thisvPosition is position transformer by WorldViewProjectionscreen.Depth= Input.vPosition.z;then in deffered shader you restore like thisfloat depth=DepthMapSampler.Sample( samplerPoint, IN.Tex.xy).r;   float4 clipPos;clipPos.x = 2.0 * IN.Tex.x - 1.0;clipPos.y = -2.0 * IN.Tex.y + 1.0;clipPos.z = depth;clipPos.w = 1.0;float4 PosWS=mul(clipPos,InvViewProj);PosWS.w = 1.0 / PosWS.w;PosWS.xyz *= PosWS.w;float3 WorldPos=PosWS.xyz;//World SpaceInvViewProj - Is Inversed ViewMatrix of your camera, that you used in renderDepthMapSampler - is your R32 textureIN.Tex.xy - Quad texture coordinatesi'v tested cascaded shadow maps and phong point lighting with that, they all seem to work very nice   ;  Oh thanks, that looks really nice and easy! Whats about the performance? I mean, it is a transform... And for each light, and for each pixel (When two lights are overdrawing)?Another thing that I would like to know about matrix transforms:WorldPosition*ViewMatrix = ViewPosition?ViewPostion*invViewMatrix = WorldPosition?That means: When I transform the view position with the inversed ViewMatrix, do I get the World position again?And is that:WorldViewProj = WorldMatrix*ViewMatrix*ProjMatrix;VertexPos*WorldViewProj = The right position on screenthe same asVertexPos*WorldMatrixVertexPos*ViewMatrixVertexPos*ProjMatrixAnd when I would inverse a View*Proj matrix, and transform the transformed Position (WorldViewProj), do I get the world position?I hote you understand me, I'm very confused about that matrix stuff   ;  performance: single mul shouldn't hurt so badcheck out humus sample on deffered rendering(he uses bounding checks directly in shader to reduce overdraw)Well you render mesh in forward render just like u usually doWorld*View*Projection, you just save z in texturein deffered shader you need only InverseViewProjectit should be like thatD3DXMATRIX ViewProj=Camera->GetViewProj();D3DXMATRIX InvViewProj;D3DXMatrixInverse(&InvViewProj,NULL,&ViewProj);in deffered shader you get REAL WORLD position[means it's alredy transformer by World matrix]u should just use you light/shadow and e.t.c. equation on it"And for each light, and for each pixel" if you afraid of that you can try doing lights in single shader, and check bounds of light so it won't overdraw   