Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
Shadow.txt104 linesDownload Raw Back to Graphics
1 2F64 theta,phi,omega,s;3CDC *dc0,*dc1;4 5 6 7 8 9 10 11 12                 <1>/* Graphics Not Rendered in HTML */13 14 15 16 17 18 19 20 21 22U0 GrBlackLighting(CDC *dc,CD3I32 *,CD3I32 *,CD3I32 *,CColorROPU32)23{24  dc->color=0;25}26 27U0 DrawShadow(CTask *task)28{29  I64 r[4][4],*r2;30 31  Mat4x4IdentEqu(dc1->r);32  Mat4x4RotZ(dc1->r,theta);33  Mat4x4RotX(dc1->r,phi);34  Mat4x4RotZ(dc1->r,omega);35  Mat4x4Scale(dc1->r,s);36  Mat4x4TranslationEqu(dc1->r,200,200,5000);37  dc1->flags|=DCF_TRANSFORMATION;38  DCMat4x4Set(dc1,dc1->r);39 40  MemSet(r,0,sizeof(r));41 42  r[0][0]=GR_SCALE;43  r[1][1]=GR_SCALE/2; //Pick a plane for the shadow, to suit your taste.44  r[1][2]=GR_SCALE/2; //It doesn't have to have a norm of 1.0.45  r[2][2]=GR_SCALE;46  r[3][3]=GR_SCALE;47 48  Mat4x4TranslationEqu(r,0,-2200,1000);49  r2=Mat4x4MulMat4x4New(r,dc1->r,task);50  Free(dc1->r);51  DCMat4x4Set(dc1,r2);52 53  dc1->lighting=&GrBlackLighting;54  Sprite3(dc1,0,0,0,<1>);55}56 57U0 DrawIt(CTask *task,CDC *)58{59  DCDepthBufRst(dc0);60  Mat4x4IdentEqu(dc0->r);61  Mat4x4RotZ(dc0->r,theta);62  Mat4x4RotX(dc0->r,phi);63  Mat4x4RotZ(dc0->r,omega);64  Mat4x4Scale(dc0->r,s);65  Mat4x4TranslationEqu(dc0->r,200,200,5000);66  dc0->flags|=DCF_TRANSFORMATION;67  DCMat4x4Set(dc0,dc0->r);68  if (mp_cnt>1)69    JobQue(&DrawShadow,task,1);70  else71    DrawShadow(task);72  Sprite3(dc0,0,0,0,<1>);73}74 75U0 Shadow()76{//The shadow image b.s.  Any is plausible.77  dc0=DCAlias(gr.dc2,Fs);78  dc1=DCAlias(gr.dc2,Fs);79  DCDepthBufAlloc(dc0);80  dc1->depth_buf=dc0->depth_buf;81 82  theta=0;83  phi=0;84  omega=0;85  s=1.5;86 87  SettingsPush; //See SettingsPush88  WinMax;89  Fs->draw_it=&DrawIt;90 91  while (!ScanChar) {92    theta+=2*pi/70;93    phi+=2*pi/90;94    omega+=2*pi/110;95    Sleep(20);96  }97  SettingsPop;98  DCDel(dc0);99  dc1->depth_buf=NULL;100  DCDel(dc1);101}102 103Shadow;104