void Update() { if (MTerrain.current == null) { return; } freeCamera.enabled = Input.GetMouseButton(1); if (Input.GetMouseButton(0)) { commandQueue.Add(lastFrameWorking); CommandBuffer bf = geometryEvt.afterGeometryBuffer; bf.SetComputeBufferParam(terrainEditShader, 0, "_DistanceBuffer", distanceBuffer); bf.SetComputeTextureParam(terrainEditShader, 0, ShaderIDs._CameraDepthTexture, new RenderTargetIdentifier(ShaderIDs._CameraDepthTexture)); uv = ((float3)Input.mousePosition).xy / float2(Screen.width, Screen.height); bf.SetComputeVectorParam(terrainEditShader, "_UV", float4(uv, 1, 1)); bf.DispatchCompute(terrainEditShader, 0, 1, 1, 1); bf.RequestAsyncReadback(distanceBuffer, complateFunc); lastFrameWorking = true; } else { lastFrameWorking = false; } if (Input.GetKeyDown(KeyCode.P)) { MTerrain.current.SaveMask(); } }
public MaskBuffer ScheduleLoadingJob(int2 chunkCoord) { MaskBuffer mb = new MaskBuffer(GetByteOffset(chunkCoord, terrainMaskCount), size); loadingCommandQueue.Add(mb); loadingThread.AddMission(loadingThreadExecutor); return(mb); }
public LoadingHandler LoadChunk(int2 position, int targetMipLevel) { LoadingHandler lh = new LoadingHandler(position, targetMipLevel); lock (lockerObj) { handlerQueue.Add(lh); } return(lh); }