ArtifexTerra Terrain Editor [1.2 Beta Release 10.3.14 Pg.16]

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
Post Reply
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by Nauk »

@plfiorini: Now that would be a totally awesome addition for everyone not wanting to use ETM please post it. Tust yesterday I was thinking about something like it and how to integrate standard TSM. :) Out of curiosity why don't you get ETM to work? Exotic hardware or what is it?

@MCin22: Keep asking / suggesting :) please, this is a good idea, thinking about a way how to implement it sensibly. I will integrate Caelum sooner or later, it is on the list already, however if you want to use it with the loader, just add whatever values caelum needs to the zonesettings.cfg and replace the loadSkye() and createSkye() in ArtifexLoaderEnvironment.cpp with your own.

Yes of course you can use Artifex 0.90 for commercial content production. The demo license only restricts you from selling or shipping this version of Artifex alongside your engine or game like it would be part of your software without asking me beforehand, thats all, but whatever scenes and scenedata you produce with it are exclusively yours with all rights and you may naturally do with it as you please, commercially or otherwise. The loader can be used in commercial closed source applications. I hope that clears it up. Do you think should I express that more clearly in the license?
And another thing, you can add that Radeon 9200 is working with Artifex (with your pack, but it's working) :D (23 FPS). With grass it looks awesome :), like an image.
Awesome!!

Btw, there is an easteregg filterset in Artifex, if you press F8 you get an array of experimental terrain tools. There is a number to it in the console window, no 1-6 works, 7-9 is just a blur. You can flip through them by pressing repeatetly F8. Let me know which ones you like or find useful :)
plfiorini
Gnoblar
Posts: 15
Joined: Thu Feb 21, 2008 8:24 am

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by plfiorini »

@Nauk: I will post the shader tonight. I don't have exotic hardware (GeForce 8800 GT G92 chipset), it's a shader problem but I used to have ETM working - I really don't know why it's not working. Anyway the shader for TSM works with ETM too (unlike the default shader provider by ETM) but it's "just" using the wrong splatting textures so for example I have rocks instead of grass :)
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by MCin22 »

@Nauk

So I've got two options :D : waiting for maybe Artifex 1.0 or use myself Caelum. I'll check these functions :P. I wanted make my own game so thanks to your projects will be able to do it. And with this license :D.

About filterset, I found one strange. I made terrain, made grass on this and when I used a filter with right button of mouse (I don't remember number), terrain went down and grass was still in the same place :). It's really easteregg filter :D . Other one was doing white terrain. With my PC it's still quite hard to see great differences, especially with lauched Firefox with few tabs. I'll check this later and write my feedback about them.
MCin22
plfiorini
Gnoblar
Posts: 15
Joined: Thu Feb 21, 2008 8:24 am

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by plfiorini »

Here's the shader with ambient light from Caelum and splatting. This worked very well with TSM, in fact it's based on the example shader from the Caelum demo.
I'm trying to use it with ETM too but with poor results because it doesn't splat the right textures so it uses the rock textures instead of the grass one.
Since it is based on the Caelum demo it can also easily support PSSM - at least there's some reference code to look at.

This is the default material:

Code: Select all

material Ainur/Materials/Base
{
	technique Default
	{
		scheme Default

		pass Main
		{
			ambient 1 1 1
			diffuse 1 1 1
			fog_override true none

			vertex_program_ref Ainur/Programs/BasicVP
			{
			}

			fragment_program_ref Ainur/Programs/BasicFP
			{
			}

			texture_unit Main
			{
				tex_coord_set 0
			}
		}
	}
}
This is the program definition:

Code: Select all

/*
 * Based on Caelum code which is (c) 2008 Caelum team.
 * See http://www.ogre3d.org/wiki/index.php/Caelum
 */

vertex_program Ainur/Programs/PSSM/ShadowCasterVP cg
{
	source Lighting.cg
	profiles vs_1_1 arbvp1
	entry_point PssmShadowCasterVP

	default_params
	{
		param_named_auto wvpMat worldviewproj_matrix
	}
}

fragment_program Ainur/Programs/PSSM/ShadowCasterFP cg
{
	source Lighting.cg
	profiles ps_2_0 arbfp1
	entry_point PssmShadowCasterFP

	default_params
	{
	}
}

vertex_program Ainur/Programs/BasicVP cg
{
	source Lighting.cg
	entry_point MainVP
	profiles vs_2_0 arbvp1
	compile_arguments -posinv -DAMBIENT=1 -DTWO_LIGHTS=1

	default_params
	{
		param_named_auto worldviewproj_matrix worldviewproj_matrix
		param_named_auto inverse_transpose_worldview_matrix inverse_transpose_worldview_matrix
	}
}

fragment_program Ainur/Programs/BasicFP cg
{
	source Lighting.cg
	entry_point MainFP
	profiles ps_2_x arbfp1
	compile_arguments -DAMBIENT=1 -DTWO_LIGHTS=1

	default_params
	{
		param_named_auto derived_scene_colour derived_scene_colour
		param_named_auto light_position_view_space_0 light_position_view_space 0
		param_named_auto light_position_view_space_1 light_position_view_space 1
		param_named_auto derived_light_diffuse_colour_0 derived_light_diffuse_colour 0
		param_named_auto derived_light_diffuse_colour_1 derived_light_diffuse_colour 1
	}
}

vertex_program Ainur/Programs/PSSM/AmbientVP cg
{
	source Lighting.cg
	profiles vs_1_1 arbvp1
	entry_point MainVP
	compile_arguments -DPSSM=0 -DAMBIENT=1

	default_params
	{
		param_named_auto worldviewproj_matrix worldviewproj_matrix
	}
}

fragment_program Ainur/Programs/PSSM/AmbientFP cg
{
	source Lighting.cg
	profiles ps_2_x arbfp1
	entry_point MainFP
	compile_arguments -DPSSM=0 -DAMBIENT=1

	default_params
	{
		param_named_auto derived_scene_colour derived_scene_colour
    }
}

vertex_program Ainur/Programs/PSSM/OneLightVP cg
{
	source Lighting.cg
	profiles vs_1_1 arbvp1
	entry_point MainVP
	compile_arguments -DPSSM=1 -DONE_LIGHT=1

	default_params
	{
		param_named_auto worldviewproj_matrix worldviewproj_matrix
		param_named_auto inverse_transpose_worldview_matrix inverse_transpose_worldview_matrix

		param_named_auto texWorldViewProjMatrix0 texture_worldviewproj_matrix 0
		param_named_auto texWorldViewProjMatrix1 texture_worldviewproj_matrix 1
		param_named_auto texWorldViewProjMatrix2 texture_worldviewproj_matrix 2
	}
}

fragment_program Ainur/Programs/PSSM/OneLightFP cg
{
	source Lighting.cg
	profiles ps_2_x arbfp1
	entry_point MainFP
	compile_arguments -DPSSM=1 -DONE_LIGHT=1

	default_params
	{
		param_named_auto invShadowMapSize0 inverse_texture_size 0
		param_named_auto invShadowMapSize1 inverse_texture_size 1
		param_named_auto invShadowMapSize2 inverse_texture_size 2

		param_named_auto light_position_view_space light_position_view_space 0
		param_named_auto derived_light_diffuse_colour derived_light_diffuse_colour 0
	}
}
This is the definition of terrain related programs:

Code: Select all

/*
 * Based on Caelum code which is (c) 2008 Caelum team.
 * See http://www.ogre3d.org/wiki/index.php/Caelum
 */

fragment_program Ainur/Programs/BasicFP/Terrain cg
{
	source Lighting.cg
	entry_point MainFP
	profiles ps_2_x arbfp1
	compile_arguments -DTERRAIN=1 -DAMBIENT=1 -DTWO_LIGHTS=1

	default_params
	{
		param_named_auto derived_scene_colour derived_scene_colour
		param_named_auto light_position_view_space_0 light_position_view_space 0
		param_named_auto light_position_view_space_1 light_position_view_space 1
		param_named_auto derived_light_diffuse_colour_0 derived_light_diffuse_colour 0
		param_named_auto derived_light_diffuse_colour_1 derived_light_diffuse_colour 1

		param_named splatScaleX float 192
		param_named splatScaleZ float 192
	}
}

fragment_program Ainur/Programs/PSSM/AmbientFP/Terrain cg
{
	source Lighting.cg
	profiles ps_2_x arbfp1
	entry_point MainFP
	compile_arguments -DPSSM=0 -DAMBIENT=1 -DTERRAIN=1

	default_params
	{
		param_named_auto derived_scene_colour derived_scene_colour

		param_named splatScaleX float 192
		param_named splatScaleZ float 192
	}
}

fragment_program Ainur/Programs/PSSM/OneLightFP/Terrain cg
{
	source Lighting.cg
	profiles ps_2_x arbfp1
	entry_point MainFP
	compile_arguments -DPSSM=1 -DONE_LIGHT=1 -DTERRAIN

	default_params
	{
		param_named_auto invShadowMapSize0 inverse_texture_size 0
		param_named_auto invShadowMapSize1 inverse_texture_size 1
		param_named_auto invShadowMapSize2 inverse_texture_size 2

		param_named_auto light_position_view_space light_position_view_space 0
		param_named_auto derived_light_diffuse_colour derived_light_diffuse_colour 0

		param_named splatScaleX float 192
		param_named splatScaleZ float 192
	}
}
This is the Cg source:

Code: Select all

/*
 * Based on Caelum code which is (c) 2008 Caelum team.
 * See http://www.ogre3d.org/wiki/index.php/Caelum
 */

void PssmShadowCasterVP
(
	float4 position         : POSITION,

	out float4 oPosition    : POSITION,
	out float2 oDepth       : TEXCOORD0,

	uniform float4x4 wvpMat)
{
	// This is the view space position
	oPosition = mul(wvpMat, position);

	// Depth info for the fragment.
	oDepth.x = oPosition.z;
	oDepth.y = oPosition.w;

	// clamp z to zero. seem to do the trick. :-/
	//oPosition.z = max(oPosition.z, 0);
}

void PssmShadowCasterFP
(
	float2 depth        : TEXCOORD0,

	out float4 oColour  : COLOR,

	uniform float4 pssmSplitPoints)
{
	float finalDepth = depth.x / depth.y;
	oColour = float4(finalDepth, finalDepth, finalDepth, 1);
}

float shadowPCF
(
	sampler2D shadowMap,
	float4 shadowMapPos,
	float2 offset
)
{
	shadowMapPos = shadowMapPos / shadowMapPos.w;
	float2 uv = shadowMapPos.xy;
	float3 o = float3(offset, -offset.x) * 0.3f;

	// Note: We using 2x2 PCF. Good enough and is alot faster.
	float c =   (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.xy).r) ? 1 : 0; // top left
	c +=        (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.xy).r) ? 1 : 0; // bottom right
	c +=        (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.zy).r) ? 1 : 0; // bottom left
	c +=        (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.zy).r) ? 1 : 0; // top right
	//float c = (shadowMapPos.z <= tex2Dlod(shadowMap, uv.xyyy - o.xyyy).r) ? 1 : 0; // top left
	//c +=      (shadowMapPos.z <= tex2Dlod(shadowMap, uv.xyyy + o.xyyy).r) ? 1 : 0; // bottom right
	//c +=      (shadowMapPos.z <= tex2Dlod(shadowMap, uv.xyyy + o.zyyy).r) ? 1 : 0; // bottom left
	//c +=      (shadowMapPos.z <= tex2Dlod(shadowMap, uv.xyyy - o.zyyy).r) ? 1 : 0; // top right
	return c / 4;
}

// Vertex program entry point.
void MainVP
(
	in float4 iPosition : POSITION,
	in float2 iTexCoord : TEXCOORD0,
	in float4 iNormal : NORMAL,

#if PSSM
	uniform float4x4 texWorldViewProjMatrix0,
	uniform float4x4 texWorldViewProjMatrix1,
	uniform float4x4 texWorldViewProjMatrix2,
#endif
	uniform float4x4 worldviewproj_matrix,
	uniform float4x4 inverse_transpose_worldview_matrix,

#if PSSM
	out float4 oLightPosition2 : TEXCOORD5,
	out float4 oLightPosition1 : TEXCOORD4,
	out float4 oLightPosition0 : TEXCOORD3,
	out float  oSplitPoint : TEXCOORD2,
#endif
	out float2 oTexCoord : TEXCOORD0,
	out float3 oNormal : TEXCOORD1,
	out float4 oPosition : POSITION
)
{
	oPosition = mul(worldviewproj_matrix, iPosition);
	oTexCoord = iTexCoord;
	oNormal = normalize(mul(inverse_transpose_worldview_matrix, iNormal).xyz);

#if PSSM
	// Calculate the position of vertex in light space
	oSplitPoint = oPosition.z;
	oLightPosition0 = mul(texWorldViewProjMatrix0, iPosition);
	oLightPosition1 = mul(texWorldViewProjMatrix1, iPosition);
	oLightPosition2 = mul(texWorldViewProjMatrix2, iPosition);
#endif
}

// Fragment program entry point.
void MainFP
(
	in float2 iTexcoord : TEXCOORD0,
	in float3 iNormal : TEXCOORD1,
#if PSSM
	in float4 iSplitPoint : TEXCOORD2,
	in float4 iLightPosition0 : TEXCOORD3,
	in float4 iLightPosition1 : TEXCOORD4,
	in float4 iLightPosition2 : TEXCOORD5,
#endif

#if PSSM
	uniform float4 invShadowMapSize0,
	uniform float4 invShadowMapSize1,
	uniform float4 invShadowMapSize2,
	uniform float4 pssmSplitPoints,

	uniform sampler2D shadowMap0 : register(s0),
	uniform sampler2D shadowMap2 : register(s2),
	uniform sampler2D shadowMap1 : register(s1),
	uniform sampler mainTexture : register(s3),
#else
	uniform sampler mainTexture : register(s0),
#endif

#if TERRAIN
	uniform sampler2D covMap1 : register(s0),
	uniform sampler2D covMap2 : register(s1),
	uniform sampler2D covMap3 : register(s2),
	uniform sampler2D splat1 : register(s3),
	uniform sampler2D splat2 : register(s4),
	uniform sampler2D splat3 : register(s5),
	uniform sampler2D splat4 : register(s6),
	uniform sampler2D splat5 : register(s7),
	uniform sampler2D splat6 : register(s8),
	uniform sampler2D splat7 : register(s9),
	uniform sampler2D splat8 : register(s10),
	uniform sampler2D splat9 : register(s11),

	uniform float splatScaleX,
	uniform float splatScaleZ,
#endif

#if AMBIENT
	uniform float4 derived_scene_colour,
#endif

#if ONE_LIGHT
	uniform float4 light_position_view_space,
	uniform float4 derived_light_diffuse_colour,
#endif 

#if TWO_LIGHTS
	uniform float4 light_position_view_space_0,
	uniform float4 derived_light_diffuse_colour_0,
	uniform float4 light_position_view_space_1,
	uniform float4 derived_light_diffuse_colour_1,
#endif

	out float4 oColour : COLOR
)
{
	// Calculate shadow
	float shadowing = 1.0f;
#if PSSM
	float4 splitColour;
	if (iSplitPoint <= pssmSplitPoints.y)
	{
		splitColour = float4(0.1, 0, 0, 1);
		shadowing = shadowPCF(shadowMap0, iLightPosition0, invShadowMapSize0.xy);
	}
	else if (iSplitPoint <= pssmSplitPoints.z)
	{
		splitColour = float4(0, 0.1, 0, 1);
		shadowing = shadowPCF(shadowMap1, iLightPosition1, invShadowMapSize1.xy);
	}
	else
	{
		splitColour = float4(0.1, 0.1, 0, 1);
		shadowing = shadowPCF(shadowMap2, iLightPosition2, invShadowMapSize2.xy);
	}
#endif

	// The colour we'll return
	oColour = float4(0, 0, 0, 0);

	// Base colour
	float4 baseColour;

#if TERRAIN
	// Modulate two scaled textures.
	float3 cov1 = tex2D(covMap1, iTexcoord).rgb;
	float3 cov2 = tex2D(covMap2, iTexcoord).rgb;
	float3 cov3 = tex2D(covMap3, iTexcoord).rgb;

	iTexcoord.x *= splatScaleX;
	iTexcoord.y *= splatScaleZ;
  
	baseColour = tex2D(splat1, iTexcoord) * cov1.x
		+ tex2D(splat2, iTexcoord) * cov1.y
		+ tex2D(splat3, iTexcoord) * cov1.z
		+ tex2D(splat4, iTexcoord) * cov2.x
		+ tex2D(splat5, iTexcoord) * cov2.y
		+ tex2D(splat6, iTexcoord) * cov2.z
		+ tex2D(splat7, iTexcoord) * cov3.x
		+ tex2D(splat8, iTexcoord) * cov3.y
		+ tex2D(splat9, iTexcoord) * cov3.z;	
#else
	baseColour = tex2D(mainTexture, iTexcoord);
#endif

#if AMBIENT
	oColour += baseColour * derived_scene_colour;
#endif

#if ONE_LIGHT
	float3 normal = normalize(iNormal);

	float diffuse_factor = max(0, dot(float4(normal, 1), light_position_view_space));
	float4 light_colour = diffuse_factor * derived_light_diffuse_colour * shadowing;
	//if (derived_light_diffuse_colour.b > 2) {
	//}
	//light_colour = splitColour * 100;

	oColour += baseColour * light_colour;
#endif

#if TWO_LIGHTS
	float3 normal = normalize(iNormal);

	// Accumulate two lights
	float4 light_colour = float4(0, 0, 0, 0);

	float diffuse_factor_0 = max(0, dot(float4(normal, 1), light_position_view_space_0));
	light_colour += diffuse_factor_0 * derived_light_diffuse_colour_0 * shadowing;

	float diffuse_factor_1 = max(0, dot(float4(normal, 1), light_position_view_space_1));
	light_colour += diffuse_factor_1 * derived_light_diffuse_colour_1 * shadowing;

	oColour += baseColour * light_colour;
#endif
}
This is the terrain material:

Code: Select all


/*
 * Based on Caelum code which is (c) 2008 Caelum team.
 * See http://www.ogre3d.org/wiki/index.php/Caelum
 */

import * from AinurDefault.material

// Terrain material
material Ainur/Materials/Terrain : Ainur/Materials/Base
{
	technique Default
	{
		pass Main
		{
			fragment_program_ref Ainur/Programs/BasicFP/Terrain
			{
			}
		}
	}
}
Here's a material for a crate mesh:

Code: Select all

import * from "AinurDefault.material"

material Crate : Ainur/Materials/Base
{
	set_texture_alias Main crate.png
}
As you can see splatting is very easy and it's actually the same thing as ETM.
I should probably do something for LoD though, but I'm still learning Cg programming.

Anyway, the terrain material should have texture_units for coverage and splatting textures. I am adding them with C++ code, here's my code (which is made with ETM in mind, when I was using TSM I did put the texture_units on the material file):

Code: Select all

				// Create splatting manager
				splattingManager = new ET::SplattingManager(COVERAGE_NAME,
					stage, coverMapSize, coverMapSize, COVERAGE_MAPS);
				splattingManager->setNumTextures(SPLATTING_TEXTURES);

				// Load coverage maps
				Ogre::LogManager::getSingleton().logMessage("[TerrainSystem] Loading coverage maps...");
				for (unsigned int i = 0; i < splattingManager->getNumMaps(); i++)
				{
					image.load("coverage." + Ogre::StringConverter::toString(i) + "." + splatExt, stage);
					splattingManager->loadMapFromImage(i, image);
				}

				// Get material and technique
				Ogre::MaterialPtr matPtr = Ogre::MaterialManager::getSingleton().getByName("Ainur/Materials/Terrain");
				Ogre::Technique* technique = matPtr->getTechnique("Default");
				if (!technique)
				{
					OGRE_EXCEPT(Ogre::Exception::ERR_RT_ASSERTION_FAILED,
						"Can't find terrain material technique.", "TerrainSystemPrivate::load");
				}

				Ogre::Pass* splattingPass = technique->getPass("Main");
				if (!splattingPass)
				{
					OGRE_EXCEPT(Ogre::Exception::ERR_RT_ASSERTION_FAILED,
						"Can't find Splatting pass from terrain material.", "TerrainSystemPrivate::load");
				}
				for (int i = 0; i < COVERAGE_MAPS; i++)
				{
					Ogre::TextureUnitState* coverage = splattingPass->createTextureUnitState();
					coverage->setTextureName(COVERAGE_NAME + Ogre::StringConverter::toString(i));
					coverage->setTextureCoordSet(i);
				}
				for (int i = 0; i < SPLATTING_TEXTURES; i++)
				{
					Ogre::TextureUnitState* splatting = splattingPass->createTextureUnitState();
					Ogre::String keyName = "Splatting" + Ogre::StringConverter::toString(i);
					Ogre::String fileName = file.getSetting(keyName, "Terrain", "splatting_rock0") + "." + splatExt;
					splatting->setTextureName(fileName);
					splatting->setTextureCoordSet(COVERAGE_MAPS + i);
				}

				// Set material
				terrainManager->setMaterial(matPtr);
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by Nauk »

@MCin22: You are most welcome :) and yeah for now you will have to roll your own, but i don't think it is that hard to work the loader up to Caelum parameters. Maybe I'll manage to have a look into Caelum soon and add it at least to the loader.

About the filters yeah they are not necessarily sensefull yet and partially a rather wild and experimental combination of algorithms, although I think no 5 and no 2 might be worth to work them out more. Anyway when you use them, press Shift+G 2x to turn the Grass off and on again to update it to the changed terrain, or turn it off when you start and on again when you are done terraforming. Note, right clicking is a blurtool in that case.

@plfiorini: Wow this looks very interesting, gonna test it soonish, it will be very useful for people wanting to skip the ETM dependency.
I should probably do something for LoD though, but I'm still learning Cg programming.
I am still learning too, by now I halfway manage to adapt existing and roll my own minishaders. Maybe ETMs VSLodmorph could do it here. Anyway - Thanks a lot for sharing it! :)
plfiorini
Gnoblar
Posts: 15
Joined: Thu Feb 21, 2008 8:24 am

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by plfiorini »

@Nauk: I would like to post a more polished version as soon as possible (probably on a more general purpose since this is more related to TSM+Caelum). Anyway my engine's code is LGPL'ed so I hope other people will improve the code too once released to the public because as I said I'm still moving my first footsteps...

ArtifexTerra is a very good editor and in fact I am concentrating on the real engine instead of think too much to my custom scene editor, because I already have the right tool to do the job.
Since ArtifexTerra saves the base and minimap images I was thinking about using those files as textures instead of a custom material with splatting - just wondering if it will make it faster and good looking.
User avatar
amigoface
Greenskin
Posts: 132
Joined: Mon Oct 13, 2008 3:01 pm

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by amigoface »

thanks Nauk and all who are working on this

for my little pb :

like i said before i had only few moments to play with it ,
so give me some time (this night i hope) and i will give you a real feedback :mrgreen:
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by MCin22 »

@Nauk

Another post to you :wink:. Well, I wrote my wish-list about Artifex, so maybe a few things will be in the future:

- New tool called Paged Objects. Because Artifex is using Paged Geometry only for grass, so I belive it's possible to make this tool. It would be very useful, for example to adding mass amount of same plants, treens. It can work this way: you are painting something like Object1 Layer and when you set options for this layer and click fill, there would be a lot of same objects on the scene.

- I said layers... Second wish is connected to previous. I mean Layers Window. There would be layers from paged objects and by clicking on them you can set for different layouts different parameters. For big scene this would be even more useful :).

- Support for Caelum, but I mean something like this: you can choose between normal sky and Caelum sky. There are projects that use first one, and other second one. Antoher thing to this is a possibility to set Caelum settings to scene or to leave them like they were (like this, you are making RPG game and you are going to another scene, so the sky should be the same like it was before changing scene, but when you are making cutscene, the sky should be different after this, I hope you understood this).

If I get time, I'll write another things :D .
MCin22
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by Nauk »

@plfiorini: I guess the engines name is Ainur? Sounds very interesting, I am looking forward and am curious what you are cooking there. Are you making it with a game project in mind or are you more interested in the engine itself? Don't worry about it being the first steps, Artifex is more or less my first 3D project too and if you just keep making the next step and stick to it you'll get somewhere :)
ArtifexTerra is a very good editor and in fact I am concentrating on the real engine instead of think too much to my custom scene editor, because I already have the right tool to do the job.
Compliments like that run down like handwarm oil, very flattering says my ego :).
Since ArtifexTerra saves the base and minimap images I was thinking about using those files as textures instead of a custom material with splatting - just wondering if it will make it faster and good looking.
You can easily try the looks out in the editor, just bake with Alt+W or using the Project-Dialogue and then replace 1 texture with a plain white one and the artifex_colourmap.png with the ETbase.png and then reload. Although it is not bad but the splatting shader + colour-layer gives a better result, and I don't think the FPS gain is that huge to justify the difference. You can also try the backblending feature after you bake by pressing Ctrl+F5, which combines both, splatting + modulated bakery.

@amigoface: You are welcome and I will forward the thanks and happily receive da real feedback - seriously appreciate & looking forward to it :)

@MCin22: Thank you :) and those are some very good ideas, organizing objects in layers is coming soon, I can easily realize that via the object-type attribue in the enhanced object-settings, or introducing even a new layer attribute. About the paging I was already thinking and checking out possible editable paging solutions and yes something like it will come too, not sure yet if I use PagedGeometry for that, or use and enhance my own solution from our game-project. No matter which it will come with paintable placement too. I started overhauling the paint-engine to make it multilayered like in popular 2D image processors, like Gimp or Photoshop, if I succeed doing what I have in mind you will be able to colour-paint extra layers and use them as maps for object placement for example, without having to ruin or touch your colour-painting for the terrain.

Quick progress-update:
Small one first, although I nearly sat 1 whole night on it until I was finally satisfied: a new button for the Filemenu.
Image Image

And a performance improvement and fix for the terrain-loading and saving. Since quite a while I had the uncertain impression that if you do a lot of reloading and saving during working on a terrain, the terrain appeared to be withering or decaying slightly but somehow. Examining it more, it proved to be the case. It probably has to do with amounting rounding errors converting the raw heightmap data to PNG back and forth all the time.

Anyway, I fixed it by adding a new binary loader and saver, so now Artifex is looking for the binary file first and if it cannot find that it will try to load the ETterrain.png, saving will go by default to binary mode now and if you are done editing and you want the PNG Heightmap you can export it via extra button. After the fix I have done easily 50 saves and reloads to see if it was further decaying, but it seems fixed. The new ArtifexLoader does support both options, so it will be up to you if you want to use PNG or .bin for your projects.
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by Nauk »

+ ...texture studio bug is fixed too, and grass-painting (demo) has gotten lightyears extra speed and accuracy, it is really fluent and very responsive now, zero lag on my system. :)
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [v0.90 RC1b - Release! - Pg.5]

Post by MCin22 »

Very nice progress with new button :D. Glad to hear about new improvements :) .

EDIT: And another question :wink: : have you tried Artifex with any physics bindings, OgreBullet, OgreNewt or with something similiar? I'm wondering how to use physics with Artifex.
MCin22
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1bII-Update1!-Pg.6]

Post by Nauk »

@MCin22: Thank you :) - No I haven't tried anything with Artifex and physics yet, simply because MOC is (hopefully) enough for what I need, anyway this doesn't mean it won't happen, I can imagine something like plugable physics support. But this is talking realtime support, right now you should be able to edit and store whatever settings you need for each object via the custom object properties and then pass it on to the physics engine in your game.

Ok here comes the first update pack with fixes for the most eminent bugs and issues in 0.90 RC1:

http://www.artifexterra3d.com/forum/gen ... ifex-here/

Summary list of fixes:
  • New filemenu button to make it more visible and clear what and where it is :)
  • Replaced the default heightmap storing system from PNG Image to a more precise binary format to fix the terrain-decay caused by frequent loading and saving of the terrain. If there is no binary file existing the loader automatically looks for a PNG heightmap.
  • Added "Export heightmap as PNG" to the projectmanager.
  • Greatly improved the grasspainting (still demo), it is lightyears faster, more responsive and accurate now. Although please be aware that it is pressure sensitive, so if you think it is slow, just up the pressure and enjoy the speed.
  • Fixed the texture studio crashing, it should again work as intended.
That's it for now - enjoy :) !
User avatar
DanielSefton
Ogre Magi
Posts: 1235
Joined: Fri Oct 26, 2007 12:36 am
Location: Mountain View, CA
x 10
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by DanielSefton »

Looking great!

Unfortunately it crashes for me. I downloaded the full new version, and it conks out just before it loads the in-scene UI (it just displays the outline of the UI in grey fill just before it crashes). The menu screen works fine. The log files are probably useless...
{snip}
17:31:46: Texture: splatting5_norm.png: Loading 1 faces(PF_R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
17:31:46: Texture: splatting6_norm.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1.
17:31:46: Texture: splatting7_norm.png: Loading 1 faces(PF_R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
17:31:47: Texture: splatting8_norm.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1.
17:31:47: WARNING: Texture instance 'manualMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:31:47: WARNING: Texture instance 'sidebarMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:31:47: WARNING: Texture instance 'statusBarMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:31:47: WARNING: Texture instance 'toolbarMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
{crash}
And when I choose to load an existing scene...
{snip}
17:36:16: Texture: splatting6_norm.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1.
17:36:16: Texture: splatting7_norm.png: Loading 1 faces(PF_R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
17:36:16: Texture: splatting8_norm.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1.
17:36:16: WARNING: Texture instance 'manualMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:36:16: WARNING: Texture instance 'sidebarMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:36:16: WARNING: Texture instance 'statusBarMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:36:16: WARNING: Texture instance 'toolbarMaskTexture' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
17:36:19: Initialising resource group Autodetect
17:36:19: Initialising resource group Bootstrap
17:36:19: Initialising resource group ETM
17:36:19: Initialising resource group General
{crash}
Any idea? :?
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by Nauk »

The logs don't indicate anything, can you tell me your system specs? Hardware, OS, Gfx-card, etc. and you could try if you can load a scene with the old shader model: http://www.artifexterra3d.com/download/ ... xtures.zip
User avatar
DanielSefton
Ogre Magi
Posts: 1235
Joined: Fri Oct 26, 2007 12:36 am
Location: Mountain View, CA
x 10
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by DanielSefton »

That worked!

I'm on XP SP3 and my graphics card is an nVidia GeForce 6600 -- which, has coped well with everything I've thrown at it with the latest stuff, SM3 etc. So I'm not sure why it's a problem here... There's obviously something it doesn't like.
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by MCin22 »

@Nauk

I almost forgot, on my Radeon 9200 water wasn't shown.

And about physics, I saw in loader code that every object is read first as temp. That's why I asked you about physics ;).
MCin22
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by Nauk »

@MCin22: You can easily fix the water by taking a water-material that is compatible with the 9200 :) - Please don't look too close at the loader code yet, it is working and the format is fleshed and stabile, but still not cleaned up.
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by MCin22 »

@Nauk

Well, I can now only look into code. You know, I wrote on your forum.
MCin22
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by Nauk »

MCin22 wrote:@Nauk

Well, I can now only look into code. You know, I wrote on your forum.
Pffft :) - You could help me looking into it instead of posting snippy remarks on my expense :D
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by MCin22 »

Nauk wrote:
MCin22 wrote:@Nauk

Well, I can now only look into code. You know, I wrote on your forum.
Pffft :) - You could help me looking into it instead of posting snippy remarks on my expense :D
You know, I looked int othis for 2 days, yesterday and today, and I couldn't find a solution. I had the same result.

And ontopic :P. One suggestion to loader: function like I once said, dig(x,y,etc), raise. That would be very good extension to Artifex. I can't see, how the raising and other things were added to Artifex and I think many other people also don't know that. And it's possible to change that is after clicking on the terrain and make this to functions possible to use in real time. :D
MCin22
User avatar
DanielSefton
Ogre Magi
Posts: 1235
Joined: Fri Oct 26, 2007 12:36 am
Location: Mountain View, CA
x 10
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by DanielSefton »

Nauk wrote:Great news :), out of curiosity, what framerate do you get the 6600?
Around 110 in a blank scene. But that can decrease quite rapidly as more 'stuff' is added to the scene. PagedGeometry's grass is a killer; in fact I've noticed that in my game, it can reduce it by a whopping 60 fps. But you've got nothing to worry about performance wise - it's pretty nimble. :)

OT: IMO the 6600 is perfect for development because it's slow enough to consider older machines (so you don't get carried away with adding pretty stuff), yet it's like a fortress in coping with intensive high-end graphics despite it being almost 5 years old. :wink:

Anyway, another well done for creating an awesome tool. :)
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by Nauk »

@MCin22: I was just kidding, of course I will help you to sort the loader compiling under Code::Blocks / MingW -> right on it now. About the dig functionality or raise/lower to a certain input level, I think I lost you there, I understand what you mean with it and I think it is a good idea, in that regard I will definately take it into Artifex but I don't understand what that has to do with the loader?

@DanielSefton: 110 is pretty good, as for the grass you can cut down the FPS cost a good deal with lowering the density to a still visible acceptable level and of course by lowering the visibility range. Another good speed lever for older hardware is to limit the camera visibility during editing and the skybox radius with it.

To the OT: About developing on an older card, seeing your project which is in many ways very similar to mine, I definately see the benefits, you really learn to limit yourself and household tightly.

And thank you for the compliment, I am very happy you like it :)
User avatar
MCin22
Gnoblar
Posts: 23
Joined: Fri Jan 02, 2009 2:35 pm

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by MCin22 »

@Nauk

Eh, my mistake. I wanted to write Artifex ;). About loader I'm trying now install VC++ 2005. If I manage to work with this, the next problem (not Artifex related) will be Ogre3d (corrupted main site; where is Ogre 1.4.9 VS80 version to download!!)
MCin22
User avatar
Nauk
Gnoll
Posts: 653
Joined: Thu May 11, 2006 9:12 pm
Location: Bavaria
x 36
Contact:

Re: ArtifexTerra - Terrain editor [0.90RC1b - Update1! - Pg.6]

Post by Nauk »

Unless you want to go cross-platform I think you won't regrett that step. The download section on the main site is up again btw :)
Post Reply