• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

110 Neutral

About dxdude

  • Rank
  1. There are some ways you can improved your detail texturing. Look here for some nice description how to avoid tiling effect.   http://udn.epicgames.com/Three/TerrainAdvancedTextures.html   In my terrain render iam using slope based methode combined with a noise map and uv mixing to give more random effect to the slope based methode.
  2. Did you try to set all your shaders to null after your drawing is done? I remember having a problem with my GShader sometime ago where i didnt set it to null. This ended up that another call to a different vertex/pixel shader was using the GS Stage too displayed wierd stuff on the screen.   For testing i would set all the stages you are using for your tesselation to null after your are done with drawing. And disable all other drawing you are doing beside your terrain rendering.
  3.   uv coords too small , eh?   Nice info Norman. There where not to small but i did a small mistake. Since i update a small constant buffer for each patch that get rendered i also supplied sector data from the patch. The sector data was used to generate continuous uv coordinates. But i got a small bug in the update process for the constant buffer.   Nice info you supplied. Thank you very much.
  4.   Woot i solved it now. There was a bug in the uv generation in the vertex shader process. Thank you very much. And sorry for the big post :)
  5. Thank you for the answer AmzBee. I cant test any code here at work atm so will do it when iam back home later. The UV are generated inside my vertex shader.   Can very low uv coodinates make problems? So when mapping from 0 to 1 and the uv for it are like 0,0078125 - 0,01..... ?   But ill check my vertex shader later. Thank you very much.
  6. Good day, i have some problem with my textures in my directx 11 app. In the distance the texture filtering seems to work like it should. But they look very pixelated when iam very close to it.   See this picture:   And this one:     Iam using "D3D11_FILTER_MIN_MAG_MIP_LINEAR" to create the texture sampler.   //Code for sampler creation D3D11_SAMPLER_DESC SamDesc; ZeroMemory(&SamDesc, sizeof(D3D11_SAMPLER_DESC)); SamDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; SamDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; SamDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; SamDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; SamDesc.MipLODBias = 0.0f; SamDesc.MaxAnisotropy = 1; SamDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; SamDesc.BorderColor[0] = SamDesc.BorderColor[1] = SamDesc.BorderColor[2] = SamDesc.BorderColor[3] = 0; SamDesc.MinLOD = 0; SamDesc.MaxLOD = D3D11_FLOAT32_MAX;     I tested it by using the filter "D3D11_FILTER_ANISOTROPIC" with MaxAnisotropy of 4 or 8 and the texture still looks pixelated at very close view. The texture loading is done with "D3DX11CreateShaderResourceViewFromFile".   //Code for texture loading D3DX11_IMAGE_LOAD_INFO imageInfo; imageInfo.Width = D3DX11_DEFAULT; imageInfo.Height = D3DX11_DEFAULT; imageInfo.Depth = D3DX11_DEFAULT; imageInfo.FirstMipLevel = D3DX11_DEFAULT; imageInfo.MipLevels = D3DX11_DEFAULT; imageInfo.Usage = D3D11_USAGE_DEFAULT; imageInfo.BindFlags = D3D11_BIND_SHADER_RESOURCE; imageInfo.Format = DXGI_FORMAT_R8G8B8A8_UNORM; imageInfo.MipFilter = D3DX11_FILTER_LINEAR; imageInfo.Filter = D3DX11_FILTER_LINEAR; D3DX11CreateShaderResourceViewFromFile(..)     It doesnt matter what kind of Filter i set or using default values for the 'D3DX11_IMAGE_LOAD_INFO' structure it still pixelated at close view.   First of all i tested if swapchain, backbuffer, depth texture are the same size as the window creation. They where all matching.   //Code window creation RECT rc = { 0, 0, 1600, 960 }; AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE ); hWnd = CreateWindow(L"myclass", L"myapp", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; g_WindowHWND = hWnd; ShowWindow(g_WindowHWND, nCmdShow); //Code buffer creation after window is created m_hWndMainRenderTarget = hwnd; // Create a Direct2D render target RECT rcRenderTarget; GetClientRect( hwnd, &rcRenderTarget); m_uiRenderTargetWidth = rcRenderTarget.right-rcRenderTarget.left; m_uiRenderTargetHeight = rcRenderTarget.bottom-rcRenderTarget.top; // Create swapchain settings DXGI_SWAP_CHAIN_DESC sSwapChainDesc; ZeroMemory( &sSwapChainDesc, sizeof( sSwapChainDesc ) ); sSwapChainDesc.BufferCount = 1; sSwapChainDesc.BufferDesc.Width = m_uiRenderTargetWidth; sSwapChainDesc.BufferDesc.Height = m_uiRenderTargetHeight; sSwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; sSwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sSwapChainDesc.OutputWindow = m_hWndMainRenderTarget; sSwapChainDesc.SampleDesc.Count = 1; sSwapChainDesc.SampleDesc.Quality = 0; sSwapChainDesc.Windowed = m_bWindowed; sSwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; // Retrive device, adapter and factory that was created with the device IDXGIDevice * pDXGIDevice; hr = m_pDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice); IDXGIAdapter * pDXGIAdapter; hr = pDXGIDevice->GetParent(__uuidof(IDXGIAdapter), (void **)&pDXGIAdapter); IDXGIFactory * pIDXGIFactory; pDXGIAdapter->GetParent(__uuidof(IDXGIFactory), (void **)&pIDXGIFactory); // Create swap chain seperate if(FAILED( hr = pIDXGIFactory->CreateSwapChain( pDXGIDevice, &sSwapChainDesc, &m_pSwapChain ) )) { return hr; } // Get a pointer to the back buffer if(FAILED( hr = m_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&m_pBackBuffer ))) { return hr; } // Create a render-target view if(FAILED( hr = m_pDevice->CreateRenderTargetView( m_pBackBuffer, NULL, &m_pRenderTargetView ))) { return hr; } D3D11_TEXTURE2D_DESC sDepthStencilTextureDesc; // Create depth stencil texture etc.. sDepthStencilTextureDesc.Width = m_uiRenderTargetWidth; sDepthStencilTextureDesc.Height = m_uiRenderTargetHeight; sDepthStencilTextureDesc.MipLevels = 1; sDepthStencilTextureDesc.ArraySize = 1; sDepthStencilTextureDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; sDepthStencilTextureDesc.SampleDesc.Count = 1; sDepthStencilTextureDesc.SampleDesc.Quality = 0; sDepthStencilTextureDesc.Usage = D3D11_USAGE_DEFAULT; sDepthStencilTextureDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; sDepthStencilTextureDesc.CPUAccessFlags = 0; sDepthStencilTextureDesc.MiscFlags = 0; if(FAILED( hr = m_pDevice->CreateTexture2D( &sDepthStencilTextureDesc, NULL, &m_pDepthStencilTexture ))) { return hr; } D3D11_DEPTH_STENCIL_VIEW_DESC sDepthStencilViewDesc; // Depth stencil view desc... ZeroMemory( &sDepthStencilViewDesc, sizeof( sDepthStencilViewDesc ) ); sDepthStencilViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; sDepthStencilViewDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; sDepthStencilViewDesc.Texture2D.MipSlice = 0; sDepthStencilViewDesc.Flags = 0; if(FAILED( hr = m_pDevice->CreateDepthStencilView( m_pDepthStencilTexture, &sDepthStencilViewDesc,&m_pDepthStencilView ))) { return hr; } // Bind the view m_pDeviceContext->OMSetRenderTargets( 1, &m_pRenderTargetView, m_pDepthStencilView ); D3D11_VIEWPORT sViewPort; // Setup the viewport sViewPort.Width = (FLOAT)m_uiRenderTargetWidth; sViewPort.Height = (FLOAT)m_uiRenderTargetHeight; sViewPort.MinDepth = 0.0f; sViewPort.MaxDepth = 1.0f; sViewPort.TopLeftX = 0; sViewPort.TopLeftY = 0; m_pDeviceContext->RSSetViewports( 1, &sViewPort );         During some debug session i tested if all the dimension of the created buffers match up with the window client rect. Every created buffer has the same size as the client area of the created window. The window istself is very basic. No menu, bars or anything. Just a simply titlebar. Text displayed on the screen done with my font engine are pixel perfect so i think the buffers size match up with the window client area size. At this point i have to say that other application like the samples from the Microsoft sdk works like accepted.   Since iam running out of ideas i can post here some more code that could be relevant.   //Code projection matrx creation. zNear = 1.0f and zFar = 12000.0f int width = g_CDevice.GetRenderTargetWidth(); int height = g_CDevice.GetRenderTargetHeight(); float fov = 0.785398163f; float aspectRatio = width / (float)height; D3DXMatrixPerspectiveFovLH(&g_mProjection, fov, aspectRatio, g_fZNear, g_fZFar);     The pixelated effect normaly starts when iam comming close to the zNear value. Something like 2 units above the zNear settings.     Here is the pixelshader iam using. It is a combination of some detail textures with slope based texturing and some blending of mixed uv values for the detail textures. They are also combined via a noise blending map for mixing the slope based texture values to get ride of the repeat effect of detail textures. All textures used here are 512x512. The texture are loaded all the same way like described at the beginning of this post and using the same texture sampler.   //Code pixelshader Texture2D txColorMap_1 : register( t0 ); // grass Texture2D txColorMap_2 : register( t1 ); // dirt Texture2D txColorMap_3 : register( t2 ); // rock Texture2D txColorMap_4 : register( t3 ); // rgba random blend map Texture2D txColorMap_5 : register( t4 ); // noisy normal map // Texture sampler - D3D11_FILTER_MIN_MAG_MIP_LINEAR / ADRESS: D3D11_TEXTURE_ADDRESS_WRAP SamplerState samLinear2D_1 : register( s0 ); struct PixelInputType { float4 position : SV_POSITION; float3 normal : TEXCOORD0; float2 tex_1 : TEXCOORD1; // uv for detail float2 tex_2 : TEXCOORD2; // uv for noise map }; float4 PSMain(PixelInputType input) : SV_Target { const float uvDetail = 32.0f; // detail uv in the range of 0.125f - 0.25f const float4 vLightDir = float4(-0.5f, 1.0f, 1.0f, 1.0f); // Directional light for testing const float4 vLightColor = float4(0.8f, 0.8f, 0.8f, 1.0f); const float4 vAmbientColor = float4(0.2f, 0.2f, 0.2f, 1.0f); float4 finalColor; float blendAmount; float4 t_1 = txColorMap_4.Sample( samLinear2D_1, input.tex_2 * 0.125f);// random map blend values float4 col; // Read detail texture float4 c1 = txColorMap_1.Sample( samLinear2D_1, input.tex_1 * uvDetail); float4 c2 = txColorMap_2.Sample( samLinear2D_1, input.tex_1 * uvDetail); float4 c3 = txColorMap_3.Sample( samLinear2D_1, input.tex_1 * uvDetail); // Read detail texture with lower uv values for mixing float4 c4 = txColorMap_1.Sample( samLinear2D_1, input.tex_1 * uvDetail * 0.25f); float4 c5 = txColorMap_2.Sample( samLinear2D_1, input.tex_1 * uvDetail * 0.125f); float4 c6 = txColorMap_3.Sample( samLinear2D_1, input.tex_1 * uvDetail * 0.125f); // lerp the values with the blend values of the c1 = lerp(c1*c4, c2, t_1.r); c2 = lerp(c2*c5, c3, t_1.g); c3 = lerp(c3,c6, t_1.b); // Slope calculation based on rastertek tutorial float slope = 1.0f - input.normal.y; if(slope < 0.2) { blendAmount = slope / 0.2f; col = lerp(c1, c2, blendAmount); } if((slope < 0.7) && (slope >= 0.2f)) { blendAmount = (slope - 0.2f) * (1.0f / (0.7f - 0.2f)); col = lerp(c2, c3, blendAmount); } if(slope >= 0.7) { col = c3; } // add normal map noise values for some cheap bump effect float3 n1 = txColorMap_5.Sample(samLinear2D_1, input.tex_1 * uvDetail); float3 n2 = txColorMap_5.Sample(samLinear2D_1, input.tex_1 * uvDetail * 0.25f); n1 = lerp(n1, n2, t_1.r); float d = dot((float3)vLightDir,n1); col *= d; // calculate directional lighting finalColor = saturate( dot( (float3)vLightDir,input.normal) * vLightColor) * col; finalColor += col * vAmbientColor; return finalColor; }       Thats all the code that could be relevant to guess what kind of bug i have. Thanks in advance to anyone here.