//プレートの作成 void GameStage::CreatePlate() { //メッシュ作成 CreatePlateMesh(); //ステージへのゲームオブジェクトの追加 auto Ptr = AddGameObject<GameObject>(); auto PtrTrans = Ptr->GetComponent<Transform>(); Quat Qt; Qt.rotationRollPitchYawFromVector(Vec3(XM_PIDIV2, 0, 0)); PtrTrans->SetScale(50.0f, 50.0f, 1.0f); PtrTrans->SetQuaternion(Qt); PtrTrans->SetPosition(0.0f, 0.0f, 0.0f); auto ColPtr = Ptr->AddComponent<CollisionRect>(); //描画コンポーネント auto DrawComp = Ptr->AddComponent<BcPNTnTStaticDraw>(); DrawComp->SetMeshResource(L"MY_PNTnT_SQUARE"); DrawComp->SetTextureResource(L"GRAY_TX"); DrawComp->SetNormalMapTextureResource(L"NORMAL3_TX"); //ラップモード DrawComp->SetSamplerState(SamplerState::LinearWrap); //スペキュラーなし DrawComp->DisableSpecular(); //フォグはきつめに DrawComp->SetFogEnabled(true); DrawComp->SetFogColor(Col4(0.3f, 0.3f,0.3f, 1.0f)); DrawComp->SetFogStart(-10.0f); DrawComp->SetFogEnd(-30.0f); //自分に影が映りこむようにする DrawComp->SetOwnShadowActive(true); }
__forceinline void SetFogColor(GIFRegFOGCOL* fog) { FUNCLOG float4 v; v.x = fog->FCR / 255.0f; v.y = fog->FCG / 255.0f; v.z = fog->FCB / 255.0f; SetFogColor(v); }
__forceinline void SetFogColor(u32 fog) { FUNCLOG gs.fogcol = fog; FlushBoth(); float4 v; // set it immediately v.SetColor(gs.fogcol); SetFogColor(v); }
void Environment::NewState() { envStates.push_back( new EnvironmentState ); // If the states are greater than 2 copy the previous last element if( envStates.size() > 1 ) { SetDuration( envStates[envStates.size()-2]->duration ); SetSkyColor( envStates[envStates.size()-2]->skyColor ); SetFogColor( envStates[envStates.size()-2]->fogColor ); SetFogExponent( envStates[envStates.size()-2]->fogExp ); SetLightColor( envStates[envStates.size()-2]->lightColor ); SetLightPosition( envStates[envStates.size()-2]->lightPosition ); } }
bool ZZLoad(s8* pbydata) { memset(s_uTex1Data, 0, sizeof(s_uTex1Data)); memset(s_uClampData, 0, sizeof(s_uClampData)); g_nCurVBOIndex = 0; // first 32 bytes are the id u32 savever = *(u32*)(pbydata + 16); if (strncmp((char*)pbydata, libraryNameX, 6) == 0 && (savever == ZEROGS_SAVEVER || savever == 0xaa000004)) { g_MemTargs.Destroy(); ZZGSStateReset(); pbydata += 32; //int context = *(int*)pbydata; pbydata += 4; u32 savelimit = VBSAVELIMIT; savelimit = *(u32*)pbydata; pbydata += 4; memcpy(g_pbyGSMemory, pbydata, MEMORY_END); pbydata += MEMORY_END; memcpy(g_pbyGSClut, pbydata, 256*4); pbydata += 256 * 4; memset(&gs, 0, sizeof(gs)); int savedgssize; if (savever == 0xaa000004) { savedgssize = 0x1d0; } else { savedgssize = *(int*)pbydata; pbydata += 4; } memcpy(&gs, pbydata, savedgssize); pbydata += savedgssize; prim = &gs._prim[gs.prac]; vb[0].Destroy(); memcpy(&vb[0], pbydata, min(savelimit, VBSAVELIMIT)); pbydata += savelimit; vb[0].pBufferData = NULL; vb[1].Destroy(); memcpy(&vb[1], pbydata, min(savelimit, VBSAVELIMIT)); pbydata += savelimit; vb[1].pBufferData = NULL; for (int i = 0; i < 2; ++i) { vb[i].Init(VB_BUFFERSIZE); vb[i].bNeedZCheck = vb[i].bNeedFrameCheck = 1; vb[i].bSyncVars = 0; vb[i].bNeedTexCheck = 1; memset(vb[i].uCurTex0Data, 0, sizeof(vb[i].uCurTex0Data)); } icurctx = -1; glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, s_uFramebuffer); // switch to the backbuffer SetFogColor(gs.fogcol); GL_REPORT_ERRORD(); return true; } return false; }
MaxDistanceFog::MaxDistanceFog(GLint programId) { glFogDistance = glGetUniformLocation(programId,"maxDistance"); glFogColor = glGetUniformLocation(programId,"fogColor"); SetFogColor(vec4(1.0,0,1.0,1.0)); SetFogDistance(25.0f); }
void Dungeon::LoadDungeon(int floor) //行く予定の階層の情報を読み込むかつ初期化 { switch (floor) { case 1: fp = fopen("./dungeon/dungeon1/floor1/map.cns", "r"); strcpy(dungeon_name, "dungeon1/floor1"); break; case 2: fp = fopen("./dungeon/dungeon1/floor2/map.cns", "r"); strcpy(dungeon_name, "dungeon1/floor2"); break; case 3: fp = fopen("./dungeon/dungeon1/floor3/map.cns", "r"); strcpy(dungeon_name, "dungeon1/floor3"); break; } floors = floor; //GraphFilter(kabe_handle, DX_GRAPH_FILTER_GAUSS, 32, 55600); if (fp == NULL) //エラーチェック { DrawString(0, 0, "Error!", GetColor(255, 0, 0)); WaitKey(); } fscanf(fp, "%d,%d", &x_max, &z_max); for (int i = 0; i < z_max; i++) { for (int i2 = 0; i2 < x_max; i2++) { fscanf(fp, "%d,", &map_data[i][i2]); //fscanf(fp, "%c"); } } fscanf(fp, "%d,%d", &start_x, &start_z); fscanf(fp, "%d", &feel_flag); fscanf(fp, "%s", kabe_name); fscanf(fp, "%d,%d,%d", &fog_r, &fog_g, &fog_b); fscanf(fp, "%f,%f", &fog_start, &fog_goal); SetTransColor(255, 255, 255); //白を透過色に kabe_handle = LoadGraph(kabe_name); SetTransColor(0, 0, 0); //一応戻す if (kabe_handle == -1) //エラーチェック { DrawString(0, 0, "Error!", GetColor(255, 0, 0)); WaitKey(); } if (feel_flag) { int keep = 0; for (int i = 0; i < z_max / 2; i++) { for (int i2 = 0; i2 < x_max; i2++) { keep = map_data[i][i2]; map_data[i][i2] = map_data[z_max - i - 1][i2]; map_data[z_max - i - 1][i2] = keep; } } } //情報の初期化 pos_x = start_x; pos_z = start_z; state = 0; time = 0; muki = 0; nowchoose = 0; state = 0; minimap_flag = 1; //カメラの初期化 target_camera = VGet(pos_x * 100 + 50, 50, pos_z * 100 + 100); player_camera = VGet(pos_x * 100 + 50, 50, pos_z * 100); //フォグの設定 SetFogEnable(TRUE); SetFogColor(fog_r, fog_g, fog_b); SetFogStartEnd(fog_start, fog_goal); }