@Override public ViewDistance getViewDistance() { return config.getRendering().getViewDistance(); }
@Override public void initialise() { super.initialise(); targetDistance = config.getRendering().getViewDistance().getChunkDistance().x * 8.0f; // TODO: This should come from somewhere, probably player entity //set the target distance to as far as the player can see. Used to get the focal distance for effects such as DOF. }
public void onChangeViewDistanceChange() { ViewDistance viewDistance = config.getRendering().getViewDistance(); if (worldRenderer != null) { worldRenderer.setViewDistance(viewDistance); } EntityRef clientEntity = localPlayer.getClientEntity(); clientEntity.send(new ViewDistanceChangedEvent(viewDistance)); }
/** * Decreases view distance upon receiving a decrease view distance event. * @param button The button or key pressed to decrease view distance. * @param entity The player entity that triggered the view distance decrease. */ @ReceiveEvent(components = ClientComponent.class) public void onDecreaseViewDistance(DecreaseViewDistanceButton button, EntityRef entity) { int viewDistance = config.getRendering().getViewDistance().getIndex(); int minViewDistance = 0; //Ensuring that the view distance does not fall below its minimum value. if (viewDistance != minViewDistance) { ViewDistance lesserViewDistance = ViewDistance.forIndex(viewDistance - 1); String lesserViewDistanceStr = translationSystem.translate(lesserViewDistance.toString()); fireChangeEvent("Decreasing view distance to " + lesserViewDistanceStr + ".", Arrays.asList(entity)); config.getRendering().setViewDistance(lesserViewDistance); } button.consume(); }
Vector3i viewingDistance = config.getRendering().getViewDistance().getChunkDistance(); Region3i viewRegion = Region3i.createFromCenterExtents(newChunkPos, new Vector3i(viewingDistance.x / 2, viewingDistance.y / 2, viewingDistance.z / 2)); if (chunksInProximity.size() == 0 || force || pendingChunks) {
/** * Increases view distance upon receiving an increase view distance event. * @param button The button or key pressed to increase view distance. * @param entity The player entity that triggered the view distance increase. */ @ReceiveEvent(components = ClientComponent.class) public void onIncreaseViewDistance(IncreaseViewDistanceButton button, EntityRef entity) { int viewDistance = config.getRendering().getViewDistance().getIndex(); int maxViewDistance = ViewDistance.values().length - 1; //Ensuring that the view distance does not exceed its maximum value. if (viewDistance != maxViewDistance) { ViewDistance greaterViewDistance = ViewDistance.forIndex(viewDistance + 1); String greaterViewDistanceStr = translationSystem.translate(greaterViewDistance.toString()); fireChangeEvent("Increasing view distance to " + greaterViewDistanceStr + ".", Arrays.asList(entity)); //Presenting user with a warning if the view distance is set higher than recommended. if (greaterViewDistance == ViewDistance.MEGA || greaterViewDistance == ViewDistance.EXTREME) { fireChangeEvent("Warning: Increasing view distance to " + greaterViewDistanceStr + " may result in performance issues.", Arrays.asList(entity)); } config.getRendering().setViewDistance(greaterViewDistance); } button.consume(); }
/** * Sends a join request from the client upstream to the server. * @param channelHandlerContext */ private void sendJoin(ChannelHandlerContext channelHandlerContext) { Config config = CoreRegistry.get(Config.class); NetData.JoinMessage.Builder bldr = NetData.JoinMessage.newBuilder(); NetData.Color.Builder clrbldr = NetData.Color.newBuilder(); bldr.setName(config.getPlayer().getName()); bldr.setViewDistanceLevel(config.getRendering().getViewDistance().getIndex()); bldr.setColor(clrbldr.setRgba(config.getPlayer().getColor().rgba()).build()); channelHandlerContext.getChannel().write(NetData.NetMessage.newBuilder().setJoin(bldr).build()); }
@Override public void update() { PerformanceMonitor.startActivity("Complete chunk update"); chunkProvider.completeUpdate(); PerformanceMonitor.endActivity(); PerformanceMonitor.startActivity("Update Lighting"); worldProvider.processPropagation(); PerformanceMonitor.endActivity(); PerformanceMonitor.startActivity("Begin chunk update"); chunkProvider.beginUpdate(); PerformanceMonitor.endActivity(); PerformanceMonitor.startActivity("Update Close Chunks"); updateChunksInProximity(calculateRenderableRegion(renderingConfig.getViewDistance())); PerformanceMonitor.endActivity(); }
ChunkMesh newMesh; ChunkView localView; for (Vector3i chunkCoordinates : calculateRenderableRegion(renderingConfig.getViewDistance())) { chunk = chunkProvider.getChunk(chunkCoordinates); if (chunk == null) {
/** * Called every frame, the shader program used by this method only composites per-pixel information from a number * of buffers and renders it into a full-screen quad, which is the only piece of geometry processed. */ @Override public void process() { PerformanceMonitor.startActivity("rendering/" + getUri()); // Shader Parameters prePostMaterial.setFloat("viewingDistance", renderingConfig.getViewDistance().getChunkDistance().x * 8.0f, true); prePostMaterial.setFloat3("cameraParameters", activeCamera.getzNear(), activeCamera.getzFar(), 0.0f, true); if (localReflectionsAreEnabled) { prePostMaterial.setMatrix4("invProjMatrix", activeCamera.getInverseProjectionMatrix(), true); prePostMaterial.setMatrix4("projMatrix", activeCamera.getProjectionMatrix(), true); } if (outlineIsEnabled) { prePostMaterial.setFloat("outlineDepthThreshold", outlineDepthThreshold, true); prePostMaterial.setFloat("outlineThickness", outlineThickness, true); } if (volumetricFogIsEnabled) { prePostMaterial.setMatrix4("invViewProjMatrix", activeCamera.getInverseViewProjectionMatrix(), true); prePostMaterial.setFloat3("volumetricFogSettings", 1f, volumetricFogGlobalDensity, volumetricFogHeightFalloff, true); } if (hazeIsEnabled) { prePostMaterial.setFloat4("skyInscatteringSettingsFrag", 0, hazeStrength, hazeLength, hazeThreshold, true); } // TODO: We never set the "fogWorldPosition" uniform in prePostComposite_frag.glsl . Either use it, or remove it. // Actual Node Processing renderFullscreenQuad(); PerformanceMonitor.endActivity(); }