Leaderboard
Popular Content
Showing content with the highest reputation on 2021-02-12 in all areas
-
3 points
-
Buenas ; Nuevos bocetos para edificios "Mayas Preclásicos"; (que conste que no he abandonado el desarrollo de Arsacids/Parthia "Arsácidas" y tampoco" Lusitanos") -Hice 2 modelos de 2 colores haciendo un total de 4 modelos para cada edificio; Centro Urbano; Barracas /Cuartel; Casas; Edificio especial- " Cancha de Pelota"; Fortaleza; Mercado; (serán mucho más bonitos con los adornos de mercancías ) Puerto; Templo; En sí , estos son los edificios sin decoraciones , les faltan las decoraciones propias de cada edificio , como escudos y lanzas en las barracas/cuartel , mercancías en el mercado , utensilios domésticos en las casas etc... pero como no sé si estos bocetos serán aceptados , por eso no los he puesto... Disculpen las molestias*2 points
-
I'm working on a new algorithm; a much more "benevolent hack" than this one. However, I was just playing a game in this marvelous new map, oceanside I think it's called, and upon attacking a cc I noticed how good the metal detection looks for Persians. So I took a screenshot, and here it is. I mean the big bronze plant pots, or whatever they are; and the copperish bull horns. I don't know if they were intended to look like metal, but it looks ridiculously cool to my eyes. The new shader algorithm work I will put it under its own thread. It will take weeks to develop, as I want to do a comprehensive coverage of all real materials. By "benevolent hack" I mean that it will not, hopefully, second-guess the artist as much as this shader hack does. First of all, suppose someone submits a set of textures for a model where all materials are correctly represented. In such a case, the shader should do nothing. So I want to write a materials analysis that favors assumptions that result in little or no actions taken. So, first priority is identify diffuse and specular color combinations that make sense and do nothing about them; next comes the category of representations that cannot be met given the present texture stack but that were represented as close as possible given the available means, such as materials like paints and plastics that need fresnel specularity. Any material that has a saturated diffuse and unsaturated specular comes in this category, basically; and the trick is to guess whether it should be a high gloss paint, a cheap paint, or a crappy plastic, just from the intensity of the specular texture relative to the diffuse. And finally the third category is color combinations that make little or no sense, such as white diffuse and white specular, and to take a guess that it wanted to be marble, and represent it like marble. Anyways, I'm writing pseudo-code for now; I'll post it when it's sort of final.2 points
-
A Psychic Shader Hack Hi. I recently wrote a crazy shader hack that tries to make out the artistic intent to represent metal, and where it decides that metal was intended, changes the diffuse and specular colors to actually best represent metal. The hack works about 50% of the time... It misses very few metals; but it converts many colors NOT intended as metals into metals, foremost among them human skin (which non-the-less becomes a believable representation of sun-tanned skin, as opposed to metallic). If you are interested in this topic, wish to look at screen shots, or try that shader, please check out this post, and the posts before --or follow the instruction on-- this linked post: For some background on what I was doing there: There are two types of light reflectors: metallic and non-metallic. Metallic reflections are colored by the metal's color. Gold is actually yellow, for example. The color we call "gold" is where chroma is yellow, but usually implies it is more specular than diffuse. A good first approximation for gold, using the standard texture set, is as 90% yellow (240, 220, 80) in RGB, say, for the specular texture, and black for diffuse. Unfortunately, most artists have no idea about material optics, and make the diffuse texture yellow, then try to add brilliance by making the specular texture light grey or white. The result is a fairly good representation of yellow plastic, and that's what it looks like in-game; not even yellow paint. Why? Because gray or white specular with a saturated color in diffuse is the closest approximation for non-metals; read below. Non-metallic reflections are NOT colored by the material. If you find this hard to believe, stop reading this and look around your kitchen for something non-metal but glossy finished and colored. The fridge won't help convince you, because it is white. Look for a can or box painted red or blue, or even having many colors, but where the paint is glossy enough to see reflections; or a glossy colored plastic item that you can look at stuff reflecting off it. Found something? Now look for something with multiple colors and orient the painted or plastic item to look at the shallow reflection of the multi-colored thing. The reflection is probably dimmed, depending on the paint or plastic's dielectric constant and the angle of reflection, but ignoring the dimming, you'll see the colors of the reflected scene represented in the reflection. (This is not true for metallic reflections: If you have a gold item with a flat side, look at a the same multi-colored scene, and you'll see that blue items look rather black on reflection.) Metallic specular reflections do not vary in intensity with the angle of reflection. Non-metal specular reflections DO vary in intensity with the angle of reflection and the material's index of refraction, following Fresnel law. Paints generally consist of a matte (diffuse) color layer under or within a layer of transparent material. Some of the incoming light reflects specularly, the intensity of this reflection being (1.0-refraction), in other words, the light splits into a part reflecting off the surface, and a part entering the transparent layer. The part of the light that enters the transparent material eventually meets the underlying or suspended diffuse pigment, becomes colored by it, and eventually refracts back out of the transparent layer. So, in a simplified model, we are looking at a non-colored but dimmed specular reflection mixed with a dimmed diffuse color, both dimmings being complementary and depending on the reflection angle. Now, to have a reflection (and non-reflection) factors depending on reflection angle, these factors have to be computed for every point on a surface in real time; they cannot come from a texture. The truest way to represent non-metals, therefore, would be for the artists to have a color channel to express the dielectric constant or the index of refraction of a material; but most artists are not science oriented people, and would probably hate to have to specify dielectric constants; but this starts to get off topic and into politics. The fact is, non-metals reflect without coloring the reflections, and so game assets where specular texture is some shade of grey while diffuse is colored, will look like a non-metal. And so my shader hack tried to identify where a metal look was actually intended, and delivered it. FAQ: Q: What about non-colored metals? Can they be told from non-metals? A: Yes. Reflections off a chromed surface are non-colored, just like dielectric reflections, but they do not change in intensity with angle. Non-metals, on the other hand, reflect the least when looking face on, but most when looking at them at a shallow angle. Q: Is Fresnel easy to compute? A: No. Fresnel is a long formula spanning the whole width of a page. In fact, it is two formulas: one for longitudinal and one for transversal polarizations. Furthermore, Fresnel factors do not only depend on refractive index (or dielectric constant) and angle, AND polarization... they also depend on wavelength (color) of the light. What you find in game engines are ridiculous oversimplifications of Fresnel. 20 years ago I implemented Fresnel in a shader for glass windows. I tried to find a half-decent approximate function. I used a tool called DataFit that takes in many points and tries to come up with math formulas that fit the data statistically. Even then it was to no avail. After about two fruitless weeks of math work, I finally gave up and implemented the whole Fresnel formula from the book into the shader, and it was done per-color channel, so it gave slightly different fresnel factors for red, green and blue. The result was absolutely spectacular, however; people could not believe such a photo-realistic representation of glass was even possible. But the computation was so long that this glass shader had to be its own shader and do nothing else. Q: Does 0ad have Fresnel? A: Yes, to an extent... The Pyrogenesis engine has a simplified implementation of Fresnel which, I believe, is only used for water refraction and reflection. As far as I know, it is not available at the materials level, such as to compute paint, plant leaf or human skin specularities. Q: What's the difference between a plastic and a paint? A: In a high gloss paint, such as car paint, the diffuse color pigments are below a glossy, transparent lacker layer; so the fresnel reflection tends to be pure, and only the refracted portion of the incident light comes back out colored. Plastics are also made of a transparent, dielectric medium and diffuse pigments, however in plastics the two are mixed together prior to injection molding, rather than layered, such that many grains of pigment break through the surface. The optical model is for a fresnel reflection tainted (mixed) with diffuse color, where the portion of diffuse color is not under Fresnel (angle) modulation. Then, in addition, there is the re-emerging refracted light, also coming out colored, but modulated by fresnel refraction. To simplify all this: Plastic representation can be computed as a glossy paint representation, but where the whole result (diffuse AND specular) is then dimmed by a factor, say 10% (mul by 0.9), and then added a 10% standard diffuse color computation; --where the 10% represents the fraction of surface are where pigments are exposed, at the microscopic level. The result is stunning, however. When I implemented plastic shading, I applied this to a Harley model I had made earlier, and I applied glossy blue paint to the gas tank, and glossy blue plastic to the tool box under the seat (same base color, same dielectric constant, same shininess power), and in-game you could easily tell that the paint was paint, and the plastic was plastic !!! ... though of course you could not tell HOW you could tell ... ;-) Q: You've said elsewhere that white diffuse and white specular don't make sense together; but then how do I represent a fridge? A: Let's look first at how a fridge works (on the outside): We are talking about a glossy paint with a white base. So, at any given angle, after calculating refracted portion from Fresnel, call it RefractionFactor, we calculate ReflectionFactor = 1.0-RefractionFactor, and the result for any pixel on the screen would be, fridgePixel = RefractionFactor*RefractionFactor*DiffuseColor + ReflectionFactor*EnvironmentMapFetch(ReflectionVector); Why did I multiply by RefractionFactor twice? Because it affects refraction of light into the material, as well as coming out of it. But even this is a gross simplification. Anyways, as the the angle becomes more shallow, the white base gets darker, dimmed, as the reflections get brighter. This is VERY different from having white diffuse light from all over the fridge, PLUS mirror-like reflection from all over the fridge as well... A case of twice as much energy bouncing off it as the energy coming in... If fridges were like that, we should place them around solar energy farms ! XD But so you simply CANNOT represent a fridge without Fresnel and without a way to specify dielectric constant. Q: I'm an artist; how can I specify paint, such as on a ceramic surface? A: If the texture stack allows specification of dielectric constant, you just need a base color in the diffuse texture, and some dielectric constant for the laquer medium (anywhere from 1.5 to about 7.0, but more realistically between 2.0 and 5.0), leaving the specular texture black; and of course you might also want to specify an appropriate power for shininess, to indicate if this is a blurry, eggshell or chrystal polished surface finish. If you don't have a way to specify dielectric constant, you'll just have to make specular texture some shade of grey... but it will look like a very dull and boring plastic; not like any real paint. If you really want paint to look like paint, you need a channel for dielectric constant in the texture stack, so that specularity changes with angle; so ask for it; or stage a demonstration ;-) Joking aside, I think most game project devs around the world are reluctant to introduce fancy channels in the texture stack because they fear the artists won't use them (or worse, mis-use them); so if you are an artist and you want this, then be sure to be heard. Q: So, to represent gold I should use 0,0,0 diffuse and 240,200,80 specular? A: That's virtual gold, with a perfect surface. Real gold is more complicated... In real metals there are usually surface imperfections at the microscopic level, craters, canyons, open caves, such that some of the incident light comes out after bouncing several times, not just once, which is what diffuse reflectance tries to model. In other words, diffuse should not be exactly zero, or black, for real metal. However, since metal reflections are colored, and this diffuse component results from multiple light bounces within metal cavities, the diffuse color of a metal is colored multiple times, and ends up being a power of its specular color. If we use 0~1 notation for color channels, assume gold's specular color is (0.9, 0.8, 0.3) --and this depends on what it is alloyed with, the karats, etc. After two bounces, the coloration becomes the square of that, namely (0.81, 0.64, 0.09). After a third bounce, the coloration is the cube of the specular color, thus (0.729, 0.512, 0.027). If we assume most of the diffuse light comes from between two and three bounces, we could average the square and the cube of the specular color, thus (0.77, 0.57, 0.33) for our raw diffuse basis. However, most of the surface is polished, single bounce; and only a small fraction of the surface has pot-holes. Assuming a 10% blemished surface (for first Century technology), we could multiply diffuse base by 0.1, and specular by 0.9. Doing so we obtain the following colors for gold: diffuse = (0.077, 0.057, 0.033), specular = (0.81, 0.72, 0.27). These numbers will produce stunningly more realistic gold looks than the popular black+yellow. Q: I fixed my (whatever material) representation, but still doesn't look realistic in-game... What's next? A: For specular reflections to look realistic, several things have to happen: Proper material representation is one of them. Secondly, there needs to be environment mapping in the shader. Presently I'm not sure there is, but I haven't specifically looked for it. If the only specularity visible is the sun's reflection, this won't work. Wherever in a gold bracelett the sun is not glittering off, there should still be a reflection of a blue sky or a cloud... --not just nothing. Third: There needs to be environment cube maps with LOD levels with progressive blurring, and the environmental reflections of shiny objects should have their environment mapping LOD bias modulated to account for the material's shininess power, to agree with the blurring of sunlight reflecting off it. If environment mapped reflections are sharp (non-LOD-biased) while specular highlights are blurred, the result is a visual cacophony. So art AND technology need to cooperate. Q: Funny that your hack tries to fix metal representation, which CAN be made explicit through the textures; and not non-metals, which can't... A: Funny you should ask. Indeed, metal representation should not need any special help; it is easy; just the right diffuse and specular colors will do the trick. Unfortunately, most metals are poorly represented, and not just in 0ad but in all games, universally. It's a disaster that should not be. In any case, this new shader will try to address non-metals as well, and even implement a bit of Fresnel. Back to the shader hack: My shader hack tried to second-guess where metallic look was intended (but poorly implemented), and changed the implementation on the fly, pixel by pixel, real time. Like I said, it worked about 50%, and it looks pretty cool, but it's admittedly too invasive. Additionally, it has the political problem of discouraging good artistic practice by changing what the artist does as it sees fit, often for the better; but threatening to change a good material into a bad one. Here's a plan for my next shader hack. The plan is to make this "metal intent detection" hack powerful and more general, and yet benevolent. How? By first detecting CORRECTLY represented materials and NOT changing them!; not touching them at all; and only THEN dealing with all the impossible materials and second-guessing what they intended to represent. That way, this new shader would be able to handle new and better material representations without altering them, and ONLY fix what REALLY needs to be fixed. It is a tall order, however... For this to work, it is not enough to identify correct representations for metals, but also "most correct possible" representations of non-metals given a texture stack that doesn't include such information as dielectric constant. With such a limited texture stack, high gloss car paint cannot be distinctly specified from cheap paint or from plastic of the same color; but such distinctions may be hopelessly attempted by an artist via the brightness of the specular texture, which makes the result look like dull plastic wrapped in glossy film, and yet it is the best thing the poor artist can do. So, not only we need to detect correctly represented materials before fixing all the rest, but we must add in-between them a category of best attempt material representations possible, and strive to deliver the actual intention with minimal intervention. The most incorrect and ludicrous diffuse and specular color combinations should be saved for last. Here is a basic detection flow based only on diffuse (diff) and specular (spec) RGB colors. Take it as a work in progress. In shaders you try to avoid conditionals, whereas this pseudo-code below is a deep, nasty conditionals rats-nest; but so this is going to be a bunch of "boolean floats" computed from input data, and a bunch of boolean floats controlling operations by multiplying their data pipes by 1.0 or 0.0; but it helps in visualizing things to write this out as a nested conditional. In other words, the pseudocode below is a visualization exercise; nothing more. But another foggy visualization in my mind is as a 6-dimensional cube, where the six dimensions are the H, S and V (hue, saturation, intensity) for diffuse and specular. This is a VERY sparse matrix when it comes to representations of "Real World" materials, but actual representations from texture artists could fall anywhere. Within this hyper-cube there are zones corresponding to real material types; and these zones can be large or small, long or short, wide or narrow, axially aligned or oblique, straight or curved. An ideal materials-correcting shader would find the location of an incoming color set for a pixel, find the nearest real material location to it in any direction in this 6D space, and move it there instead. But this is easier said than done. Anyways, the process of writing this pseudocode will hopefully shed light on the problem. Most easily identified as correctly represented material colors combos are detected first: // Clairvoyant shader, reads artists' hearts and minds, and produces the //materials they actually intended to portray :) Shader mod pseudo-code: diff = convert_to_HSV( diffuse_tex_color ); spec = convert_to_HSV( specular_tex_color ); if( diff.v < 0.05 ) //black diffuse { if( spec.v < 0.05 ) //black specular material = BLACK_HOLE; else if( spec.v < 0.15 ) //dark specular material = CHARCOAL; else //not so dark specular material = METAL_MIRROR; } else if( diff.v < 0.15 ) //dark diffuse { if( spec.v < 0.15 ) //dark specular material = CHARCOAL; } else { if( spec.v < 0.1 ) material = MATTE_MATERIAL; //almost nothing to do } else if( diff.v < 0.1 ) ( //VALID REPRESENTATION OF A METAL MIRROR disable_fresnel(); set_shininess_power( 1000 ); //a very high shininess } /* NOTE: It may be worth considering to just ignore overly dark input, as it does not make too big a difference to the visual experience, so there's not much of a point making guesses and corrections. */ else if( diff.v < spec.v ) //specular brighter than diffuse { if( diff.s >= spec.s ) //if diff sat equal or higer than spec sat, { if( spec.s > 0.1 ) //if specular has some saturation { if( diff.s + spec.s < 0.1 //if both are greyish || diff.h ~= spec.h ) //or if their hues match { //CLEARLY AND CORRECTLY REPRESENTED METAL!!! YEY!! //nothing to do vis-a-vis the colors; congrats! set_shininess_power( incoming * 2 ); disable_fresnel(); } else //saturated colors in diff and spec that don't match in hue spec = BLACK; //convert this abomination into a matte color. } else if( diff.s > spec.s ) //high achromatic specularity { //probably a high-gloss paint was intended set_shininess_power( incoming * 2 ); set_dielectric_constant_to( 5.0 * spec.v ); enable_fresnel(); } else //spec more saturated than diff; aberration! { //a desaturated diffuse color could conceivably be an intent //to depict salt or dust on a metal surface. The correct way //would be to darken the specular wherever a bird dropping //covers the diffuse. We'll try to complete such an intent //by darkening spec in proportion to the loss of saturation //in the diffuse disable_fresnel(); spec *= ( diff.s / spec.s ); set_shininess_power( 10 ); //a very low shininess ....... to be continued, or trashed, we shall see ....... switch( material ) { case CHARCOAL: spec.v += diff.v; spec.s = 0; diff.v = 0; disable_fresnel(); set_shininess_power( 22 ); //a very low shininess break; case BLACK_HOLE: disable_fresnel(); break; case MATTE_MATERIAL: disable_fresnel(); break; case : break; default: }1 point
-
1 point
-
Oops, I guess I saw this but read over it. The Carthaginian/Iberian ram is far more generic and therefore more appropriate for the Kushites. The Assyrian ram is way too specific/iconic. Anyway, we'll just try to make something unique for the Kushites in Alpha 25. A few more lion statues from the Lion Kingdom (literally found from the northern most, to the southern most provinces of the Kingdom): Lion-headed spout for a wine press: And another lion-headed outlet for a press: Oldie but a goldie: The Meroitic statue behind the lion is very interesting as well. Local Kushite manufacture that contrasts strongly with other millennia long classical Nile Valley principles in statuary. This piece is heavily influenced by Greco-Roman traditions: And a few Kushite sphinxes: Sphinx of King Aspelta Sphinx from the Amun Temple at Gebel Barkal, Napata: Sphinx of King Senkamanisken: Sphinx from Meroë: This one is actually from Karnak, Thebes, Egypt, and is a 25th Dynasty Sphinx depicting the Kushite princess Shepenwepet II, High Priestess of Amun, and daughter of King Piye:1 point
-
1 point
-
Actually I did make a patch... up to the metal detection shader; you can apply it, and then copy the more recent shader on top. It's called "ao_and_terrains.patch", and you have to apply it in the /binaries/data/mods/public/ folder, because that's where I did the svn diff. Go to the folder and type patch -p0 -i ao_and_terrains.patch After that, to get the metal detection/depiction shader, just copy model_common.fs to the folder /binaries/data/mods/public/shaders/glsl/ overwriting the one from the patch. Both attached. Enjoy. ao_and_terrains.patch model_common.fs1 point
-
solved i fogot make -j3 in unbuntu i use now a sh-cript **0ad-subversion-fetch-and-start.sh** https://gist.github.com/sl5net/7453cb8d9a1c040e9524969b57a6e2091 point
-
Tis no bug! My foult! i did not used make -j33333 at then end. when that is forgotten, the following happens. either leave the posting here and simply forget it or delete it. Thank you. BTW That first i using SVN with Linux. i using ubuntu. i able to build and start the game by using the git version. but this is always a bit, some days old. i able to build NOT start the game by using the SVN version. # SVN - thats always the newest version https://trac.wildfiregames.com/wiki/BuildInstructionsGettingTheCode sudo apt update sudo apt install subversion mdkir svn; cd svn; svn co https://svn.wildfiregames.com/public/ps/trunk/ 0ad cd ~/svn/0ad/build/workspaces cd ~/svn/0ad/build/workspaces ; ./update-workspaces.sh -j13 # thats not found: ~/svn/0ad/binaries/system/pyrogenesis & # GITHUB thats working, but a bit old ~/0ad/binaries/system/pyrogenesis & #update git i do very often: cd ~/0ad; git fetch https://github.com/0ad/0ad.git cd ~/0ad/build/workspaces ;./update-workspaces.sh -j13 ~/0ad/binaries/system/pyrogenesis &1 point
-
The release candidate is here! Revision: rP24875 https://releases.wildfiregames.com/rc/0ad-0.0.24rc1-24875-alpha-win32.exe https://releases.wildfiregames.com/rc/0ad-0.0.24rc1-24875-alpha-osx64.dmg PLEASE READ THIS BEFORE POSTING & TESTING The RC will overwrite the current installed version. The RC will use your current config including mods, so make sure to disable EVERYTHING (fgod, autociv, and badosu's mod are not supported) You might get warnings about hotkeys, we redesigned completely the system, so you might have to fix some of them (you may want to backup your config file if your intend to play A23B again It goes without saying but even though we are really close to a release, this is an experimental version. If you want to help more you can also perform those steps Launch a random game Test your language's translations and fix them on Transifex. Launch a normal skirmish. Connect to the lobby Play on the lobby with someone Launch Atlas See if everything works there. Open Unit tests demo (To see if there any breakage in displaying entity's) (It's in scenarios) Try mods through modio only. (A23B MODS WILL NOT WORK) If you need any help ping me Enable feedback and see if it works (Main menu) Connect to and use mod.io Test replaying new games Test Saving and loading a game. Changelog1 point
-
For those of you who are interested in the history of Nubia after the Kingdom of Kush, Kings and Generals just did a video on Christian Nubia. Not a terrible introduction to the history: Here's a recent Youtube video on the history of Kush. It features the artwork of @LordGood and @Victor Rossi, so I couldn't not share it Nice... Not thrilling... But nice...1 point
-
1 point
-
1 point
-
Generally free values do not work very well for balancing. Having a population of cost 0 is a huge advantage against any player with a civilization that does not have mercenaries, and the situation only gets worse in team games. Another example would be a nomad or deathmatch game, where you can have a clear advantage over your opponent. Putting a number limit on mercenaries that can be trained doesn't seem like a good solution either.1 point
-
Game Chat. Yellow player: Why are we paused????? Red player(Host): Blue player has gone offline for a moment. Yellow player: WTF! Why????? Red player(Host): He said he needed the toilet. Green player: He was obviously in need of a Kushite! Yellow player: LOL! Song: Salt'n'Peppa - Kush It!1 point
-
Not it is not as it is not an official WFG communication. Currently the official sources are trac.wildfiregames.com, code.wildfiregames.com and the outdated page here : https://trac.wildfiregames.com/wiki/Alpha241 point