Esempio n. 1
0
	void cWaterUberShader::defaultValue()
	{
		m_textureScale = sVector2(8.0f, 4.0f);
		m_waveFreq = 0.0065f;
		m_waveAmp = 8.0f;
		m_bumpScale = 0.15f;
		m_bumpSpeed = sVector2(-0.1f, 0.0f);
		m_deepColor = sVector4(0.0f, 0.0f, 0.1f, 1.0f);
		m_shallowColor = sVector4(0.0f, 0.3f, 0.4f, 1.0f);
		m_waterAmount = 0.3f;

		m_reflectionColor = sVector4(1.0f, 1.0f, 1.0f, 1.0f);
		m_reflectionAmount = 1.0f;
		m_reflectionBlur = 0.0f;

		m_fresnelPower = 4.0f;
		m_fresnelBias = 0.2f;
		m_hdrMultiplier = 3.0f;
	}
Esempio n. 2
0
void App::OnPaint()
{
    sInt time = sGetTimeMS();
    sTargetPara tp(sTAR_ClearAll,0xff405060,Screen);
    sViewport view;

    Context->BeginTarget(tp);

    view.Mode = sVM_Pixels;
    view.Prepare(tp);

    cbv0->Map();
    cbv0->Data->Set(view);
    cbv0->Unmap();

    // draw

    sInt vc = 0;
    Vertex *vp;

    Geo->VB(0)->MapBuffer(&vp,sRMM_Discard);
    for(auto &cl : Clicks)
    {
        sF32 f = 1.0f-(time-cl.Time)*0.002f;
        sF32 s = 50.0f*(1-f);
        sF32 x = sF32(cl.ScreenX);
        sF32 y = sF32(cl.ScreenY);
        if(vc+3<=MaxVertex && f>0)
        {
            if(!cl.Make) s *= -1;
            sU32 col = cl.Color;
            col += (sU32(f*255)<<24);
            vp[vc+0].Init(x-s,y-s*0.5f,0.5f,col);
            vp[vc+1].Init(x+s,y-s*0.5f,0.5f,col);
            vp[vc+2].Init(x  ,y+s     ,0.5f,col);

            vc += 3;
        }
        else
        {
            cl.Color = 0;
        }
    }
    if(DragActive)
    {
        sU32 col = 0xffffffff;

        sFRect r;
        r.Init(sF32(StartX),sF32(StartY),sF32(EndX),sF32(EndY));
        sVector2 tn = sNormalize(sVector2(r.SizeY(),-r.SizeX()));

        vp[vc+0].Init(r.x0+tn.x,r.y0+tn.y,0.5f,col);  // 00
        vp[vc+1].Init(r.x0-tn.x,r.y0-tn.y,0.5f,col);  // 01
        vp[vc+2].Init(r.x1-tn.x,r.y1-tn.y,0.5f,col);  // 11
        vp[vc+3].Init(r.x0+tn.x,r.y0+tn.y,0.5f,col);  // 00
        vp[vc+4].Init(r.x1-tn.x,r.y1-tn.y,0.5f,col);  // 11
        vp[vc+5].Init(r.x1+tn.x,r.y1+tn.y,0.5f,col);  // 10
        vc+=6;
    }
    Geo->VB(0)->Unmap();

    if(vc>0)
    {
        sDrawPara dp(Geo,Mtrl,cbv0);
        sDrawRange dr;
        dr.Start = 0;
        dr.End = vc;
        dp.Flags |= sDF_Ranges;
        dp.RangeCount = 1;
        dp.Ranges = &dr;

        Context->Draw(dp);
    }

    // remove unused clicks

    sInt max = Clicks.GetCount();
    for(sInt i=0; i<max;)
    {
        if(Clicks[i].Color == 0)
            Clicks[i] = Clicks[--max];
        else
            i++;
    }
    Clicks.SetSize(max);

    // debug

    DPaint->PrintFPS();
    DPaint->PrintStats();
    DPaint->Draw(tp);

    Context->EndTarget();
}
Esempio n. 3
0
void MyWindow::OnPaint2D()
{
  //sRect2D(Client,sGC_BACK);
  //sLine2D(Client.x0,Client.y0,Client.x1-1,Client.y1-1,sGC_DRAW);
  //sLine2D(Client.x0,Client.y1-1,Client.x1-1,Client.y0,sGC_DRAW);
  
  sF32 width = 1.5f;

  sInt sx = Client.SizeX();
  sInt sy = Client.SizeY();

  sImage img(sx,sy);
  sVectorRasterizer raster(&img);

  img.Fill(sGetColor2D(sGC_BACK));

  // thick line 1
  raster.MoveTo(sVector2(0,0));
  raster.EdgeTo(sVector2(width,0));
  raster.EdgeTo(sVector2(sx,sy-width));
  raster.EdgeTo(sVector2(sx,sy));
  raster.EdgeTo(sVector2(sx-width,sy));
  raster.EdgeTo(sVector2(0,width));
  raster.EdgeTo(sVector2(0,0));

  // thick line 2
  raster.MoveTo(sVector2(sx,0));
  raster.EdgeTo(sVector2(sx,width));
  raster.EdgeTo(sVector2(width,sy));
  raster.EdgeTo(sVector2(0,sy));
  raster.EdgeTo(sVector2(0,sy-width));
  raster.EdgeTo(sVector2(sx-width,0));
  raster.EdgeTo(sVector2(sx,0));

  raster.RasterizeAll(sGetColor2D(sGC_DRAW),sVRFC_NONZERO_WINDING);
  sBlit2D(img.Data,img.SizeX,Client);
}