First Desktop of Summoner 7

This is exciting to create this poster with 14 characters in the demo

The Demo Screenshot of Summoner 7

Finally, all characters are in the demo!

First Elf in Summoner 7

Chuck Lin designed this character.

World map is done!

There are six big stages and 5 small stages in each of them.

Human Archer

My favorite character in Summoner 7.

January 28, 2010

NPR shading implementation (color distortion + cel shading)

NPR shading   
Tool: ATI Rendermonkey
Language: HLSL
These technique takes me 5 passes to finish it. And some passes need to be improved.
Pass 0: Cel shading
Pass 1: Color distortion
Pass 2: Normal
Pass 3: image based ink shading
Pass 4: Combination (Final)
As you can see, the technique includes three common shading, Cel, Color Distortion, and normal based ink.
The feature is the color distortion:

The idea of this shading is simple:
first the color has to be changed from RGB to HSV.
Then, sample one pixels from two special texture, and compare their value.
If their differential is bigger than X, the S and V of HSV value of the mapping pixel on rendertagart should be the average of the two sampling pixels.
However, my way to transform the color space has some problems
these step still needs to be improved

January 26, 2010

Tone Shader

Tool: ATI Rendermonkey
Language: HLSL
Basically, this technique can be done by two pass. First, I create a basic infinite light shading to render to texture. The rendertarget uses the alpha to store the shading result. In the final pass, I use a 2D texture which is my "tone" map to lerp the last pass result. Done! 
Key Code:
float4 ps_main(float3 pos : TEXCOORD1, float3 nrm : TEXCOORD2) : COLOR
    float  diffuse = min(1.0,max(0,dot(-Light_Direction,nrm)));
    diffuse = pow(diffuse,5);
    diffuse = (diffuse*4)/3.0; 
    float4 Col = float4(1,1,1,diffuse);
    return Col;



float4 ps_main(float2 tex: TEXCOORD0) : COLOR0
   float4 color;
   float4 base = tex2D(Texture0,tex);
   float4 hatch = tex2D(Texture1, tex);
   color = lerp(hatch , base, base.a) ;
   return color * base; 


Chinese Watercolor Shader Implementation (HLSL)

Tool : ATI Rendermonkey
Language: HLSL
First, I use 3D-Based edge detection. Basically, all I need is the dot production of view-to-vertex vector and the vertex normal. Then, if the dot production is bigger than x (x can be thought as the ink width or the angle between the normal and view vector), I draw black texture on it. If the dot production smaller than x, I draw another texture on it.
Key Code:

VS_OUTPUT vs_main( VS_INPUT Input)
   VS_OUTPUT Output;
   float3 Nrm = normalize(Input.Normal);
   float3 ViewVec = normalize(Input.Position - viewPos);
   Output.edge = dot(Nrm, ViewVec);
   Output.Position = mul( Input.Position, mul(mul(view,projection),world));
   Output.Normal = Nrm;
   return( Output );

float4 ps_main(float edge:TEXCOORD0, float3 N1: TEXCOORD1) : COLOR0

    float4 color; 
    float absV = abs(edge);
      float2 findColor = float2(absV*2.5f, N1.x/2.0f+N1.y/2.0f);
      color = tex2D(Texture1, findColor);
     float2 findColor = float2((1-absV)*1.666f, N1.x/2.0f+0.5f);
      color = tex2D(Texture0, 1-findColor);
   return color;
Here is another test: Ink Shading + Lambert Shading


January 11, 2010

Hugo's Game Projects Review 4: Bananarama

Project: Bananarama
Project Time: Dec/2009
Project Duration: 4 weeks 
Project Members: 5 people
My Role: Modeler / Animator 
Tools: 3DS MAX, Panda (3D engine)

Hugo's Game Projects Review 3: Minotaur

Project: Minotaur
Project Time: Nov/2009
Project Duration: 3 weeks 
Project Members: 4 people
My Role: Modeler / Animator 
Tools: 3DS MAX, Panda (3D engine)

Hugo's Game Projects Review 2: Qin Shihuang' Tomb

  Project: Qin Shihuang' Tomb
  Project Time: Oct/2009

  Project Duration: 2 weeks 
  Project Members: 4 people

  My Role: Modeler / Animator / Producer / 
  Tools: 3DS MAX, Panda (3D engine)

Hugo's Game Projects Review 1: Loony Balloony's Nightmare

Project: Loony Balloony's Nightmare
Project Time: Sept/2009
Project Duration: 2 weeks
Project Members: 4 people
My Role: Modeler / Animator / Shader
Tools: 3DS MAX, Panda (3D engine), NVIDIA FX Composer
Shaders: Radial Blur / Cel / Ink