Sign in to follow this  
Kurt-olsson

DX11 Can i program DirectX11 on a GeForce 8800GTX?

Recommended Posts

Kurt-olsson    254
Iam going through some DX11 tutorials and as soon as i am going to draw with Shaders the program crashes.
When i declarate these functions with D3DX10CreateEffectFromFile it works, but when using D3DX11CompileFromFile there is a crash on the dev->Draw Method.

Is this because my Card is not DirectX 11 compatible?

Sigh... Mr Murphy don´t want me to make games...
I was happy with my engine untill i saw soft shadowmapping shadows... i want them in my engine!!! =)


If this is the case, which DX11 card is best (not ATI, i want nVidia) for around 200$?

Share this post


Link to post
Share on other sites
Asesh    276
GeForce 8x doesn't support shader model 5 but however you can D3D11 by specifying D3D_FEATURE_LEVEL_10_0 when calling D3D11CreateDeviceAndSwapChain and user shader model 4

Share this post


Link to post
Share on other sites
Kurt-olsson    254
Hm ok, but this means i have to change all my shaders to and stuff like this:

[source lang="cpp"]D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "VShader", "fx_4_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "PShader", "fx_4_0", 0, 0, 0, &PS, 0, 0);
// encapsulate both shaders into shader objects
dev->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);
dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pPS);
[/source]

wont work i guess?

Share this post


Link to post
Share on other sites
damix911    201
Hello KurtO, just so you know (because it is actually a little counter-intuitive) your 8-series card [i]may[/i] support compute shaders, even though with some limitations. So you may want to give them a try, they could be useful to achieve some smoothing effects. You can refer to this thread for more info on this topic.

[url="http://www.gamedev.net/topic/582066-the-question-about-directcompute-and-opencl/"]http://www.gamedev.net/topic/582066-the-question-about-directcompute-and-opencl/[/url]

Basically as Asesh said the DirectX 11 API can be used to program DirectX 10 and even DirectX 9 hardware, but all the features you use must be available on that hardware, so DirectX 11 adds nohing in terms of functionality to these cards [i]except[/i] compute shaders, which actually work (I used to program them on my G210, DirectX 10 card).

Share this post


Link to post
Share on other sites
Kurt-olsson    254
Thank you damix911, i was wrong, i didnt think you could use the DirectX11 API at all, but this is not the case. Luckily i didnt buy a new card and i will continue develop DirectX11 on my 8800GTX card.
The limitation is not in my hardware at this moment, it is in my brain trying to understand all the math and physics! =) hehe

I have trouble today with Soft shadow mapping and i have seen some examples in DX11 so that is why i am jumping the ship from DX9.
I also like the whole new API with shaders for rendering and i think it is convinient to have the shaders do lot of the "SetRendering" Flags that you had to do in DX9.

So onve again, thanks for your help and if anyone find a nice "simple" soft shadow mapping sample, please let me know! =)

Share this post


Link to post
Share on other sites
Nik02    4348
Tessellation and "full" compute shaders are cool, though [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img]

Take a look at the DX SDK June 2010 samples (not sure if Windows SDK still has them as they were). There are several shadow samples; though the most advanced ones require SM5 to run efficiently, and require more GPU work if implemented in earlier models. Edited by Nik02

Share this post


Link to post
Share on other sites
Kurt-olsson    254
Nik02, ihave tried with lmost all of the SDK samples, but i hate when they work with DXUtil.
I want full understanding and it takes so much time to understand all the Util-Functions that are used. And also there is always proppet with all kinds of features, lots of option and different techniques.

I would like basic sample that is easy to follow with just a plane and some simple meshes / primitives.

I think the basic problem is that i have to poor understanding of shaders and DX11 but i am doing lots of DX11 tutorials, and shaders are COOOOOOL and i cant imagine to program now without them.

But like you i also think tessellation and "full" shaders are cool! =) But i am not there yet in my knowledge. heheh

Share this post


Link to post
Share on other sites
Nik02    4348
The utility stuff in samples is usually used so as to reduce the amount of so-called "boilerplate" code - functionality that a general DX sample app needs to do anyway. The actual techniques demonstrated in the SDK samples are largely independent from the utility classes. Most of the "meat" is in the shader and effect files.

Soft shadowing is a relatively advanced concept, but if you have a good understanding on how to do shadow maps and blurring as independent techniques, it is not extremely difficult to combine them. Both general shadow mapping and blurring have lots of examples floating around the 'net.

Be sure to check the NVidia, AMD and Intel developer sites for more GPU samples as well.

Share this post


Link to post
Share on other sites
Kurt-olsson    254
I think i understand the concept, but there are so many steps, and everything has to be 100% precise for this to work (syntax, shaders and pixelshader and states), But i will definetly try one of those demos and then try to implement shadows to my engine.

Share this post


Link to post
Share on other sites
Nik02    4348
Yea, you need some highly abstract thinking to truly understand shadow mapping; in particular, the relation to the "camera" and "light" spaces. Once you do understand it, the code itself is not too difficult. Same applies to blurring. Soft shadows are generally implemented as shadow maps with variable blur width based on distance or occlusion criteria (though this is not the only way).

You can use PIX to inspect the intermediate render targets (such as the shadow depth map), if you find that your technique doesn't work in an expected way. Once you see the device state visually, it is much easier to determine what's wrong (if anything). Edited by Nik02

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Similar Content

    • By gsc
      Hi! I am trying to implement simple SSAO postprocess. The main source of my knowledge on this topic is that awesome tutorial.
      But unfortunately something doesn't work... And after a few long hours I need some help. Here is my hlsl shader:
      float3 randVec = _noise * 2.0f - 1.0f; // noise: vec: {[0;1], [0;1], 0} float3 tangent = normalize(randVec - normalVS * dot(randVec, normalVS)); float3 bitangent = cross(tangent, normalVS); float3x3 TBN = float3x3(tangent, bitangent, normalVS); float occlusion = 0.0; for (int i = 0; i < kernelSize; ++i) { float3 samplePos = samples[i].xyz; // samples: {[-1;1], [-1;1], [0;1]} samplePos = mul(samplePos, TBN); samplePos = positionVS.xyz + samplePos * ssaoRadius; float4 offset = float4(samplePos, 1.0f); offset = mul(offset, projectionMatrix); offset.xy /= offset.w; offset.y = -offset.y; offset.xy = offset.xy * 0.5f + 0.5f; float sampleDepth = tex_4.Sample(textureSampler, offset.xy).a; sampleDepth = vsPosFromDepth(sampleDepth, input.uv).z; const float threshold = 0.025f; float rangeCheck = abs(positionVS.z - sampleDepth) < ssaoRadius ? 1.0 : 0.0; occlusion += (sampleDepth <= samplePos.z + threshold ? 1.0 : 0.0) * rangeCheck; } occlusion = saturate(1 - (occlusion / kernelSize)); And current result: http://imgur.com/UX2X1fc
      I will really appreciate for any advice!
    • By isu diss
       I'm trying to code Rayleigh part of Nishita's model (Display Method of the Sky Color Taking into Account Multiple Scattering). I get black screen no colors. Can anyone find the issue for me?
       
      #define InnerRadius 6320000 #define OutterRadius 6420000 #define PI 3.141592653 #define Isteps 20 #define Ksteps 10 static float3 RayleighCoeffs = float3(6.55e-6, 1.73e-5, 2.30e-5); RWTexture2D<float4> SkyColors : register (u0); cbuffer CSCONSTANTBUF : register( b0 ) { float fHeight; float3 vSunDir; } float Density(float Height) { return exp(-Height/8340); } float RaySphereIntersection(float3 RayOrigin, float3 RayDirection, float3 SphereOrigin, float Radius) { float t1, t0; float3 L = SphereOrigin - RayOrigin; float tCA = dot(L, RayDirection); if (tCA < 0) return -1; float lenL = length(L); float D2 = (lenL*lenL) - (tCA*tCA); float Radius2 = (Radius*Radius); if (D2<=Radius2) { float tHC = sqrt(Radius2 - D2); t0 = tCA-tHC; t1 = tCA+tHC; } else return -1; return t1; } float RayleighPhaseFunction(float cosTheta) { return ((3/(16*PI))*(1+cosTheta*cosTheta)); } float OpticalDepth(float3 StartPosition, float3 EndPosition) { float3 Direction = normalize(EndPosition - StartPosition); float RayLength = RaySphereIntersection(StartPosition, Direction, float3(0, 0, 0), OutterRadius); float SampleLength = RayLength / Isteps; float3 tmpPos = StartPosition + 0.5 * SampleLength * Direction; float tmp; for (int i=0; i<Isteps; i++) { tmp += Density(length(tmpPos)-InnerRadius); tmpPos += SampleLength * Direction; } return tmp*SampleLength; } static float fExposure = -2; float3 HDR( float3 LDR) { return 1.0f - exp( fExposure * LDR ); } [numthreads(32, 32, 1)] //disptach 8, 8, 1 it's 256 by 256 image void ComputeSky(uint3 DTID : SV_DispatchThreadID) { float X = ((2 * DTID.x) / 255) - 1; float Y = 1 - ((2 * DTID.y) / 255); float r = sqrt(((X*X)+(Y*Y))); float Theta = r * (PI); float Phi = atan2(Y, X); static float3 Eye = float3(0, 10, 0); float ViewOD = 0, SunOD = 0, tmpDensity = 0; float3 Attenuation = 0, tmp = 0, Irgb = 0; //if (r<=1) { float3 ViewDir = normalize(float3(sin(Theta)*cos(Phi), cos(Theta),sin(Theta)*sin(Phi) )); float ViewRayLength = RaySphereIntersection(Eye, ViewDir, float3(0, 0, 0), OutterRadius); float SampleLength = ViewRayLength / Ksteps; //vSunDir = normalize(vSunDir); float cosTheta = dot(normalize(vSunDir), ViewDir); float3 tmpPos = Eye + 0.5 * SampleLength * ViewDir; for(int k=0; k<Ksteps; k++) { float SunRayLength = RaySphereIntersection(tmpPos, vSunDir, float3(0, 0, 0), OutterRadius); float3 TopAtmosphere = tmpPos + SunRayLength*vSunDir; ViewOD = OpticalDepth(Eye, tmpPos); SunOD = OpticalDepth(tmpPos, TopAtmosphere); tmpDensity = Density(length(tmpPos)-InnerRadius); Attenuation = exp(-RayleighCoeffs*(ViewOD+SunOD)); tmp += tmpDensity*Attenuation; tmpPos += SampleLength * ViewDir; } Irgb = RayleighCoeffs*RayleighPhaseFunction(cosTheta)*tmp*SampleLength; SkyColors[DTID.xy] = float4(Irgb, 1); } }  
    • By amadeus12
      I made my obj parser
      and It also calculate tagent space for normalmap.
      it seems calculation is wrong..
      any good suggestion for this?
      I can't upload my pics so I link my question.
      https://gamedev.stackexchange.com/questions/147199/how-to-debug-calculating-tangent-space
      and I uploaded my code here


      ObjLoader.cpp
      ObjLoader.h
    • By Alessandro Pozzer
      Hi guys, 

      I dont know if this is the right section, but I did not know where to post this. 
      I am implementing a day night cycle on my game engine and I was wondering if there was a nice way to interpolate properly between warm colors, such as orange (sunset) and dark blue (night) color. I am using HSL format.
      Thank  you.
    • By thefoxbard
      I am aiming to learn Windows Forms with the purpose of creating some game-related tools, but since I know absolutely nothing about Windows Forms yet, I wonder:
      Is it possible to render a Direct3D 11 viewport inside a Windows Form Application? I see a lot of game editors that have a region of the window reserved for displaying and manipulating a 3D or 2D scene. That's what I am aiming for.
      Otherwise, would you suggest another library to create a GUI for game-related tools?
       
      EDIT:
      I've found a tutorial here in gamedev that shows a solution:
      Though it's for D3D9, I'm not sure if it would work for D3D11?
       
  • Popular Now