• 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.

smallGame

Members
  • Content count

    78
  • Joined

  • Last visited

Community Reputation

211 Neutral

About smallGame

  • Rank
    Member
  1.   ok , I tried it does compile!! Thanks   When I run it on Nvidia hardware it crashes, so now I need someone to look at it which has an Nvidia hardware ...
  2. Thanks for your answer, yes but I am block before that, I cannot compile my program because I don't know clGetDeviceIDsFromD3D11NV_fn which is in the Nvdia SDK.   So yes that the idea, I can even use the GetPlatformInfo or GetDeviceInfo to know which extension I can use.   Even if I buy a new PC with Nvidia hardware my program won't compile anymore because I won't have AMD SDK installed on it.   So I come back with my initial question:  What's happen if I install both graphics card SDK on a same PC ?? Can I really do that ?   I guess it's my only solution...
  3. Hi,   I want to use the interoperability between OpenCL and DirectX11. I have a Radeon graphics card, and I want to run my .exe on an Nvidia card.   Is is it possible ?   So far I use this pointer function type   clGetDeviceIDsFromD3D11KHR_fn avaible in the AMD SDK but I guess I need to use this type clGetDeviceIDsFromD3D11NV_fn available in the Nvidia SDK.   I guess I am going to do something wrong if I install the Nvidia SDK https://developer.nvidia.com/cuda-toolkit-31-downloads with a Radeon card.   Any solution for me ?   thanks,
  4. I replied this private message that could be interested :     Thanks for feedback !     I am using openCL to compute the physics simulation. You can use my physics library with any renderer, even mine if you want. I use DirectX11.   No     Physics particles simulation library is free, my renderer is free, the framework to have all demos and sample is also free I could send you a nice package where you should have only to press F5 to have it working... If you need additional feature, manage other collision shape, or mesh, I  could develop them (also for free) I have also some limitations that I could explain to you, and I also could remove them (also for free )
  5. Hi,   I d like to share my youtube channel, with some particles using my library. performance are in the videos description:   http://www.youtube.com/user/uuuq78/videos     You can also look at the interface I provide : #ifndef PHYSICS_PARTICLE #define PHYSICS_PARTICLE #ifdef EXPORT_DLL #define MYPROJECT_API __declspec(dllexport) #else #define MYPROJECT_API __declspec(dllimport) #endif struct ID3D11Device; struct ID3D11Buffer; // A vector 3 struct MYPROJECT_API vrVec3 { float x, y, z; }; // A vector 4 struct MYPROJECT_API vrVec4 : public vrVec3 { float w; }; // An Axis Aligned Bounding Volume struct MYPROJECT_API vrAabb { vrVec4 m_Min; vrVec4 m_Max; }; // A sphere struct MYPROJECT_API vrSphere { vrVec3 m_Position; float m_Radius; }; // A distance constraint between two paricles struct MYPROJECT_API vrSpring { int m_ParticleIndex1; int m_ParticleIndex2; float m_Distance; int m_Pad; vrSpring():m_Pad(0) {} }; // A particle accelerator // Type 0 is a force field, // Type 1 is a simple force, that uses only the directionvector struct MYPROJECT_API vrAccelerator { enum { FORCE_FIELD = 0, SIMPLE_FORCE = 1, ACCELRATOR_TYPES_COUNT}; vrVec4 m_Position; vrVec4 m_Direction; float m_Radius; unsigned int m_Type; }; class MYPROJECT_API PhysicsParticle { public: PhysicsParticle(); ~PhysicsParticle(); // Particles positions accesor vrVec4 *GetParticlePositions() const; vrVec4 *GetPreviousPositions() const; int GetParticlesCount() const; // Setters void SetParticlesMass(float mass); void SetParticlesGazConstant(float mass); void SetParticlesViscosity(float viscosity); void SetParticlesAcceleration(const vrVec4 &acceleration); void SetDamping(float damping); // Getters float GetParticlesMass() const; float GetParticlesGazConstant() const; float GetParticlesViscosity() const; // Initialize particles start position void Initialize(vrVec4 *positions,int positionsCount); // Intialize openCL device void InitializeOpenCL( ID3D11Device *d3D11Device = 0 , ID3D11Buffer *d3D11buffer = 0); // Initialize data to the device void InitializeOpenClData(); // Physics step void Simulate(); // Release allocated memory void Release(); // Dynamic grid used to test or to get neighbors information void CreateGrid(vrVec4 *positions, int positionsCount); void CreateGrid(); int GetNeighbors(int currentIndex, int *neighbors, int neighborsMaxCount); // Add collision geometry void AddInsideAabb(const vrAabb& aabb); void AddOutsideAabb(const vrAabb& aabb); void AddInsideSphere(const vrSphere& sphere); void AddOutsideSphere(const vrSphere& sphere); // Accesor to modify them, the returned ponters could change when // collision geometries are added vrAabb *GetInsideAabbs(); vrSphere *GetOutsideSpheres(); int GetInsideAabbsCount() const; int GetOutsideSpheresCount() const; // Add a constraint between two particles void AddSpring(const vrSpring& spring); // Accelerators // Add an accelerator, to use to setup a force field or simple gravity void AddAccelerator(const vrAccelerator & accelerator); // Removes all accelerator void ClearAccelerators(); void UpdateAccelerator(int index, const vrAccelerator& accelerator); // Physcal parameter // Grid and sph void SetEnableGridOnGPU(bool isCreatingGridOnGPU); void SetEnableSPHAndIntegrateOnGPU(bool sphAndIntegrateOnGPU); void SetEnableCollisionOnGPU(bool collisionOnGPU); void SetEnableSpringOnGPU(bool springOnGPU); void SetEnableAcceleratorOnGPU(bool acceleratorOnGPU); // Cloth only for springs void SetClothCount(int clothCount); // Enabling interoperability void SetIsUsingInteroperability(bool isUsingInteroperability); bool IsUsingInteroperability() const; // Running physics on the CPU, GPU is used by default void SetIsUsingCPU(bool isUsingCPU); }; #endif // PHYSICS_PARTICLE If someone is interested to try it let's me know...
  6.   Good point :)
  7. Thanks for your feedback,       Internally my data are SIMD friendly, I use SIMD vector, and allocations are aligned. I copy the given vectors, the user can delete or do whatever with the given data I don't keep any reference on it. Anyway it won't changed anything because internally I am using float4 from openCL. The use of the  SetIsUsingCPU (true); function also use openCL.   Why are you telling me about SIMD ? Do you think my perfs are terrible ?       Yes it is. And you point out what is really bad; at this stage I only handle one set of particles, I have to remove this limitation...       The indices are referencing the particles positions set  by: Initialize(vrVec4 *positions, int positionsCount); 0 -> first particle position. Not sure to see what it is not clear there. but for sure there are some missing comments. By the way I have done some other tests and I solve about 24 000 constraints (vrSpring) in 0.17ms, by removing a CPU transfer...         Yes you're completely right I have a Radeon serie 79 something.I also have to use a a real profiler maybe. I am using my own at this stage...     Thanks for your comments, and if you want to try it I can give it. I have a particle renderer, this particle interface and a framework which has a keyboard, a mouse control, a basic camera, and that use the physics output to give it to the renderer. I also have the different sample we can see on my Youtube channel.        
  8.  Hi,   I started to write a physics particle engine, I still have to finish a lot of stuff before releasing the 0.1 version.   I d like to have some feedback on the interface I provide at this stage. #ifndef PHYSICS_PARTICLE #define PHYSICS_PARTICLE #ifdef EXPORT_DLL #define MYPROJECT_API __declspec(dllexport) #else #define MYPROJECT_API __declspec(dllimport) #endif struct ID3D11Device; struct ID3D11Buffer; // A vector 3 struct MYPROJECT_API vrVec3 { float x, y, z; }; // A vector 4 struct MYPROJECT_API vrVec4 : public vrVec3 { float w; }; // An Axis Aligned Bounding Volume struct MYPROJECT_API vrAabb { vrVec4 m_Min; vrVec4 m_Max; }; // A sphere struct MYPROJECT_API vrSphere { vrVec3 m_Position; float m_Radius; }; // A distance constraint between two paricles struct MYPROJECT_API vrSpring { int m_ParticleIndex1; int m_ParticleIndex2; float m_Distance; int m_Pad; vrSpring():m_Pad(0) {} }; // A particle accelerator // Type 0 is a force field, // Type 1 is a simple force, that uses only the directionvector struct MYPROJECT_API vrAccelerator { enum { FORCE_FIELD = 0, SIMPLE_FORCE = 1, ACCELRATOR_TYPES_COUNT}; vrVec4 m_Position; vrVec4 m_Direction; float m_Radius; unsigned int m_Type; }; class MYPROJECT_API PhysicsParticle { public: PhysicsParticle(); ~PhysicsParticle(); // Particles positions accesor vrVec4 *GetParticlePositions() const; vrVec4 *GetPreviousPositions() const; int GetParticlesCount() const; // Setters void SetParticlesMass(float mass); void SetParticlesGazConstant(float mass); void SetParticlesViscosity(float viscosity); void SetParticlesAcceleration(const vrVec4 &acceleration); void SetDamping(float damping); // Getters float GetParticlesMass() const; float GetParticlesGazConstant() const; float GetParticlesViscosity() const; // Initialize particles start position void Initialize(vrVec4 *positions,int positionsCount); // Intialize openCL device void InitializeOpenCL( ID3D11Device *d3D11Device = 0 , ID3D11Buffer *d3D11buffer = 0); // Initialize data to the device void InitializeOpenClData(); // Physics step void Simulate(); // Release allocated memory void Release(); // Dynamic grid used to test or to get neighbors information void CreateGrid(vrVec4 *positions, int positionsCount); void CreateGrid(); int GetNeighbors(int currentIndex, int *neighbors, int neighborsMaxCount); // Add collision geometry void AddInsideAabb(const vrAabb& aabb); void AddOutsideAabb(const vrAabb& aabb); void AddInsideSphere(const vrSphere& sphere); void AddOutsideSphere(const vrSphere& sphere); // Accesor to modify them, the returned ponters could change when // collision geometries are added vrAabb *GetInsideAabbs(); vrSphere *GetOutsideSpheres(); int GetInsideAabbsCount() const; int GetOutsideSpheresCount() const; // Add a constraint between two particles void AddSpring(const vrSpring& spring); // Accelerators // Add an accelerator, to use to setup a force field or simple gravity void AddAccelerator(const vrAccelerator & accelerator); // Removes all accelerator void ClearAccelerators(); void UpdateAccelerator(int index, const vrAccelerator& accelerator); // Physcal parameter // Grid and sph void SetEnableGridOnGPU(bool isCreatingGridOnGPU); void SetEnableSPHAndIntegrateOnGPU(bool sphAndIntegrateOnGPU); void SetEnableCollisionOnGPU(bool collisionOnGPU); void SetEnableSpringOnGPU(bool springOnGPU); void SetEnableAcceleratorOnGPU(bool acceleratorOnGPU); // Cloth only for springs void SetClothCount(int clothCount); // Enabling interoperability void SetIsUsingInteroperability(bool isUsingInteroperability); bool IsUsingInteroperability() const; // Running physics on the CPU, GPU is used by default void SetIsUsingCPU(bool isUsingCPU); }; #endif // PHYSICS_PARTICLE I also have a Youtube channel where you can see some samples : http://www.youtube.com/user/uuuq78/videos perf in description.   Cheers,
  9. Hi,   #include "track.h"  // Include   class track; // forward declaration You have to split in two files like you ve just tried. In brick.h you put the forward declaration and in brick.cpp you include brick.h and track.h. Then everything should work.
  10. Hi,   Thanks for your help ! Everything is working perfectly ! So it was an easy question I miss-read the doc ;)   see you
  11. Hi Hodgman,   I am using shader model 4 and 5, I don't have any restriction...   I saw you are helping a lot of people on this forum, so I guess I ll have a solution quite soon :) . I am really wondering why talented people like you spend so much time to help people stuck like me :).   Thanks,
  12. Hi,   I want to put 4 values of 256 bits in a float and read these 4 values in HLSL. Do you know if it is possible, in c++ I see several way to do that by using union or reinterpret_cast. But both are not avaible in HLSL:   To be clear I wrote a simple example : // 4 values in c++ char v1 = 1, v2 = 2, v3 = 3, v4 = 4; // Store them in C++ int store = (v1 << 0) | (v2 << 8) | (v3 << 16) | (v4 << 24); // Put them in a float float valueStored = *reinterpret_cast<float*>(&store); // Now I want to use these values // Oh no I cannot use reinterpret_cast!! :( in HLSL int uncompress = *reinterpret_cast<int*>(&valueStored); // Read the value char o1, o2, o3, o4; o1 = (char) uncompress & 0xFF; o2 = (char)(uncompress >> 8) & 0xFF; o3 = (char)(uncompress >> 16) & 0xFF; o4 = (char)(uncompress >> 24) & 0xFF; I want to use a float and not an int because I want to send a float4 to the GPU, with 3 floats and 1 float with 4 values.   Thanks for your help,   cheers,
  13. I don't know exactly why I used openCL, I wanted to use this tech like a aim. I was thinking to port my code from openCL to Direct Compute but then I thought it will be easier to integrate the interoperability. And I think there is something really good with openCL, it is scalable even on CPU, so I don't have to do some multi-threading , openCL will do it for me. The other good thing with openCL it is that is portable. I also wanted to integrate my stuff in a friend engine which is in OpenGL on i Platform.   So maybe now you d like to know why I used DirectX11 :) I wanted also used this tech because it was used in my job, and I knew some HLSL.   I don't have any screen shot but I created a Youtube channel : http://www.youtube.com/user/uuuq78/videos Galaxy is the one I was talking about. In the video description I put the benchmarks in ms. I will update my videos and benchmarks with the interoperability when I will have integrated it correctly.
  14. Thanks a lot !! This stuff is amazing, I was simulating 1 million force field particles at 30 FPS, now at more than 400 FPS :) I was expecting a big gain because of all return tickets I was paying from CPU to GPU, now there is none !
  15. Hi,   My problem is at the compilation stage, or even before :   I don't have the functions : clGetDeviceIDsFromD3D11KHR, ...etc in my <CL/cl_d3d11.h>, instead I have this function pointer clGetDeviceIDsFromD3D11KHR_fn.   I have the "cl_khr_d3d11_sharing" strng in my platform extension information.   I tried to add #pragma OPENCL EXTENSION cl_khr_d3d11_sharing : enable, but doesn't work.   So if you have any idea, or if you already used it I am really interested.   Thanks,