1
Feature requests, suggestions / Several suggestions...
« on: October 24, 2006, 11:39:59 PM »
Hello.
I've been working with WME for some time, so, there is a list of all things that could make WME better. (If they are implemented). Some of them are very specific, but... (please don't take anything personally - it's all just my working expierence):
1) Request: type informations in scripts. Or at least some way to extract properties of given variable.
Reason: for example - there is "ShadowColor" property in Actor3D. When I first met this value I've spent some time thinking just about in which way it is stored. Is this an rgba structure (for me this solution looks reasonable)? Or is it a DWORD? And if it is structure what are it's fields - ints or floats?
So I suppose that more documentation is needed, or there must be added some way to specify explict structure of variable.
2) Request: Scripting speedup. Right now scripting is quite slow. 20lines script attached to an actor in some situations can make engine run VERY slow...
3) Request: IWmeValue::GetType();
Reason: It is not easy sometimes to determine the type of variable passed to a plugin from a script. Probing it using ISValInt() of IsValFloat() looks to me as a very strange to do things. Another bad thing is that IWmeValue uses virtual functions. That increases memory usage. What about analog of VARIANT types? Not for structures, just for a single values?
4) Request: LowLevel render access/per actor renderstates.
Reason: It is not possible ANY of standart 3D tricks right now. Not just event a simple soft shadow.
Not possible to do anything! (Sorry, it looks like I'm getting too emotional). During the laast month I've been asked several times about soft shadows. I know several techniques to achieve desired effect (at least five of them), but I was unable to implement any of them due to engine restrictions.
Even attaching simple custom shadow blob was not possible because it cuts off actor feet due to enabled D3DRS_ZWRITEENABLE. I know that WME tries to be a "High level engine", But (IMHO) it's a bad direction of progress. I suppose that a simple api layere that could help me to change drawing order, to set a specific render-state on per-actor basis, to change render target to something I want to use, to draw custom objects without adding actor would be great.
5) Request: LowLevel scene access. (Lights, geometry)
Reason: That's all comes from "soft/dynamic shadows" request of my customer. When I tried to access a scene information (number of lights in scene, theri names, positions, states, inner/outer radius, type, falloff) I found that there is none available. Finally I wrote a plugin that provides all this information, but, that's certainly just another wrong way to do things. Since information is already stored in engine, isn't it easy enough just to make it accessible in scripts? Just for reading, at least?
6) Request: LowLevel animation controller. (actors)
Reason: It's not possible right now to implement such a simple effect as making actor to look at something. (I do not mean turning the whole body, just the head). I can't parse 3d actors bone structore. This makes many good things impossible. (as well as another shadow-making technique)
7) Request: actor/model/scene loader plugin.
Reason: What about custom model formats? both *.X and *.3ds are quite old and both have large amount of limitations: There is no lights in *.X, and there is no normals in *.3ds, as well as no free spot lights and so on. And, by the way *.X file format gets spoiled by Microsoft with every next generation of DirectX SDK.
Request: hardware acceleration support.
Reason: As I see, currently WME doesn't use fully hardware acceleration (D3DDEVCAPS_PUREDEVICE). I know that there are some specific problems on both ATI and GeForce (point sprites/wireframes on ATi and the fact that there is no indexed Vertex blending on ANY GeForce video card), but all of them can be solved. And hardware support will make run with rocket speed compared with current state.
9) Request: stencil shadows optimizations
Reason: It looks like Stencil Shadows are calculated completely using CPU (I think so because of two times slowdown). There is a good article in ATI SDK "Hardware Shadow Volume Extrusion using vertex shaders". Shadow Volumes, created this way works well even on cards with no hardware VertexShader support. And they are MUCH faster than a CPU runtime-calculated shadows
10) Request: Mesh/3DEntity/static Mesh class.
Reason: Creating an actor for every teapot in scene is a quite strange way(IMHO) to do things. It looks for me like a way of wasting system resources. I think that having an unanimated static/moveable mesh would be good.
Any comments?
I've been working with WME for some time, so, there is a list of all things that could make WME better. (If they are implemented). Some of them are very specific, but... (please don't take anything personally - it's all just my working expierence):
1) Request: type informations in scripts. Or at least some way to extract properties of given variable.
Reason: for example - there is "ShadowColor" property in Actor3D. When I first met this value I've spent some time thinking just about in which way it is stored. Is this an rgba structure (for me this solution looks reasonable)? Or is it a DWORD? And if it is structure what are it's fields - ints or floats?
So I suppose that more documentation is needed, or there must be added some way to specify explict structure of variable.
2) Request: Scripting speedup. Right now scripting is quite slow. 20lines script attached to an actor in some situations can make engine run VERY slow...
3) Request: IWmeValue::GetType();
Reason: It is not easy sometimes to determine the type of variable passed to a plugin from a script. Probing it using ISValInt() of IsValFloat() looks to me as a very strange to do things. Another bad thing is that IWmeValue uses virtual functions. That increases memory usage. What about analog of VARIANT types? Not for structures, just for a single values?
4) Request: LowLevel render access/per actor renderstates.
Reason: It is not possible ANY of standart 3D tricks right now. Not just event a simple soft shadow.
Not possible to do anything! (Sorry, it looks like I'm getting too emotional). During the laast month I've been asked several times about soft shadows. I know several techniques to achieve desired effect (at least five of them), but I was unable to implement any of them due to engine restrictions.
Even attaching simple custom shadow blob was not possible because it cuts off actor feet due to enabled D3DRS_ZWRITEENABLE. I know that WME tries to be a "High level engine", But (IMHO) it's a bad direction of progress. I suppose that a simple api layere that could help me to change drawing order, to set a specific render-state on per-actor basis, to change render target to something I want to use, to draw custom objects without adding actor would be great.
5) Request: LowLevel scene access. (Lights, geometry)
Reason: That's all comes from "soft/dynamic shadows" request of my customer. When I tried to access a scene information (number of lights in scene, theri names, positions, states, inner/outer radius, type, falloff) I found that there is none available. Finally I wrote a plugin that provides all this information, but, that's certainly just another wrong way to do things. Since information is already stored in engine, isn't it easy enough just to make it accessible in scripts? Just for reading, at least?
6) Request: LowLevel animation controller. (actors)
Reason: It's not possible right now to implement such a simple effect as making actor to look at something. (I do not mean turning the whole body, just the head). I can't parse 3d actors bone structore. This makes many good things impossible. (as well as another shadow-making technique)
7) Request: actor/model/scene loader plugin.
Reason: What about custom model formats? both *.X and *.3ds are quite old and both have large amount of limitations: There is no lights in *.X, and there is no normals in *.3ds, as well as no free spot lights and so on. And, by the way *.X file format gets spoiled by Microsoft with every next generation of DirectX SDK.
Request: hardware acceleration support.
Reason: As I see, currently WME doesn't use fully hardware acceleration (D3DDEVCAPS_PUREDEVICE). I know that there are some specific problems on both ATI and GeForce (point sprites/wireframes on ATi and the fact that there is no indexed Vertex blending on ANY GeForce video card), but all of them can be solved. And hardware support will make run with rocket speed compared with current state.
9) Request: stencil shadows optimizations
Reason: It looks like Stencil Shadows are calculated completely using CPU (I think so because of two times slowdown). There is a good article in ATI SDK "Hardware Shadow Volume Extrusion using vertex shaders". Shadow Volumes, created this way works well even on cards with no hardware VertexShader support. And they are MUCH faster than a CPU runtime-calculated shadows
10) Request: Mesh/3DEntity/static Mesh class.
Reason: Creating an actor for every teapot in scene is a quite strange way(IMHO) to do things. It looks for me like a way of wasting system resources. I think that having an unanimated static/moveable mesh would be good.
Any comments?