GameRenderer.java
net.minecraft.client.renderer.GameRenderer
信息
- 全限定名:net.minecraft.client.renderer.GameRenderer
- 类型:public class
- 包:net.minecraft.client.renderer
- 源码路径:src/main/java/net/minecraft/client/renderer/GameRenderer.java
- 起始行号:L105
- 实现:AutoCloseable, TrackedWaypoint.Projector
- 职责:
TODO
字段/常量
-
BLUR_POST_CHAIN_ID- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L106 - 说明:
TODO
- 类型:
-
MAX_BLUR_RADIUS- 类型:
int - 修饰符:
public static final - 源码定位:
L107 - 说明:
TODO
- 类型:
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L108 - 说明:
TODO
- 类型:
-
PROJECTION_3D_HUD_Z_FAR- 类型:
float - 修饰符:
public static final - 源码定位:
L109 - 说明:
TODO
- 类型:
-
PORTAL_SPINNING_SPEED- 类型:
float - 修饰符:
private static final - 源码定位:
L110 - 说明:
TODO
- 类型:
-
NAUSEA_SPINNING_SPEED- 类型:
float - 修饰符:
private static final - 源码定位:
L111 - 说明:
TODO
- 类型:
-
minecraft- 类型:
Minecraft - 修饰符:
private final - 源码定位:
L112 - 说明:
TODO
- 类型:
-
gameRenderState- 类型:
GameRenderState - 修饰符:
private final - 源码定位:
L113 - 说明:
TODO
- 类型:
-
random- 类型:
RandomSource - 修饰符:
private final - 源码定位:
L114 - 说明:
TODO
- 类型:
-
itemInHandRenderer- 类型:
ItemInHandRenderer - 修饰符:
public final - 源码定位:
L115 - 说明:
TODO
- 类型:
-
screenEffectRenderer- 类型:
ScreenEffectRenderer - 修饰符:
private final - 源码定位:
L116 - 说明:
TODO
- 类型:
-
renderBuffers- 类型:
RenderBuffers - 修饰符:
private final - 源码定位:
L117 - 说明:
TODO
- 类型:
-
spinningEffectTime- 类型:
float - 修饰符:
private - 源码定位:
L118 - 说明:
TODO
- 类型:
-
spinningEffectSpeed- 类型:
float - 修饰符:
private - 源码定位:
L119 - 说明:
TODO
- 类型:
-
bossOverlayWorldDarkening- 类型:
float - 修饰符:
private - 源码定位:
L120 - 说明:
TODO
- 类型:
-
bossOverlayWorldDarkeningO- 类型:
float - 修饰符:
private - 源码定位:
L121 - 说明:
TODO
- 类型:
-
renderBlockOutline- 类型:
boolean - 修饰符:
private - 源码定位:
L122 - 说明:
TODO
- 类型:
-
lastScreenshotAttempt- 类型:
long - 修饰符:
private - 源码定位:
L123 - 说明:
TODO
- 类型:
-
hasWorldScreenshot- 类型:
boolean - 修饰符:
private - 源码定位:
L124 - 说明:
TODO
- 类型:
-
lightmap- 类型:
Lightmap - 修饰符:
private final - 源码定位:
L125 - 说明:
TODO
- 类型:
-
lightmapRenderStateExtractor- 类型:
LightmapRenderStateExtractor - 修饰符:
private final - 源码定位:
L126 - 说明:
TODO
- 类型:
-
uiLightmap- 类型:
UiLightmap - 修饰符:
private final - 源码定位:
L127 - 说明:
TODO
- 类型:
-
useUiLightmap- 类型:
boolean - 修饰符:
private - 源码定位:
L128 - 说明:
TODO
- 类型:
-
overlayTexture- 类型:
OverlayTexture - 修饰符:
private final - 源码定位:
L129 - 说明:
TODO
- 类型:
-
panorama- 类型:
Panorama - 修饰符:
protected final - 源码定位:
L130 - 说明:
TODO
- 类型:
-
resourcePool- 类型:
CrossFrameResourcePool - 修饰符:
private final - 源码定位:
L131 - 说明:
TODO
- 类型:
-
fogRenderer- 类型:
FogRenderer - 修饰符:
private final - 源码定位:
L132 - 说明:
TODO
- 类型:
-
guiRenderer- 类型:
GuiRenderer - 修饰符:
private final - 源码定位:
L133 - 说明:
TODO
- 类型:
-
submitNodeStorage- 类型:
SubmitNodeStorage - 修饰符:
private final - 源码定位:
L134 - 说明:
TODO
- 类型:
-
featureRenderDispatcher- 类型:
FeatureRenderDispatcher - 修饰符:
private final - 源码定位:
L135 - 说明:
TODO
- 类型:
-
postEffectId- 类型:
Identifier - 修饰符:
private - 源码定位:
L136 - 说明:
TODO
- 类型:
-
effectActive- 类型:
boolean - 修饰符:
private - 源码定位:
L137 - 说明:
TODO
- 类型:
-
mainCamera- 类型:
Camera - 修饰符:
private final - 源码定位:
L138 - 说明:
TODO
- 类型:
-
hudProjection- 类型:
Projection - 修饰符:
private final - 源码定位:
L139 - 说明:
TODO
- 类型:
-
lighting- 类型:
Lighting - 修饰符:
private final - 源码定位:
L140 - 说明:
TODO
- 类型:
-
globalSettingsUniform- 类型:
GlobalSettingsUniform - 修饰符:
private final - 源码定位:
L141 - 说明:
TODO
- 类型:
-
levelProjectionMatrixBuffer- 类型:
ProjectionMatrixBuffer - 修饰符:
private final - 源码定位:
L142 - 说明:
TODO
- 类型:
-
hud3dProjectionMatrixBuffer- 类型:
ProjectionMatrixBuffer - 修饰符:
private final - 源码定位:
L143 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public GameRenderer(Minecraft minecraft, ItemInHandRenderer itemInHandRenderer, RenderBuffers renderBuffers, ModelManager modelManager) @ L145
- 构造器名:GameRenderer
- 源码定位:L145
- 修饰符:public
参数:
- minecraft: Minecraft
- itemInHandRenderer: ItemInHandRenderer
- renderBuffers: RenderBuffers
- modelManager: ModelManager
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void close() @ L180
- 方法名:close
- 源码定位:L180
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public SubmitNodeStorage getSubmitNodeStorage() @ L195
- 方法名:getSubmitNodeStorage
- 源码定位:L195
- 返回类型:SubmitNodeStorage
- 修饰符:public
参数:
- 无
说明:
TODO
public FeatureRenderDispatcher getFeatureRenderDispatcher() @ L199
- 方法名:getFeatureRenderDispatcher
- 源码定位:L199
- 返回类型:FeatureRenderDispatcher
- 修饰符:public
参数:
- 无
说明:
TODO
public GameRenderState getGameRenderState() @ L203
- 方法名:getGameRenderState
- 源码定位:L203
- 返回类型:GameRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public void setRenderBlockOutline(boolean renderBlockOutline) @ L207
- 方法名:setRenderBlockOutline
- 源码定位:L207
- 返回类型:void
- 修饰符:public
参数:
- renderBlockOutline: boolean
说明:
TODO
public void clearPostEffect() @ L211
- 方法名:clearPostEffect
- 源码定位:L211
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void togglePostEffect() @ L216
- 方法名:togglePostEffect
- 源码定位:L216
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void checkEntityPostEffect(Entity cameraEntity) @ L220
- 方法名:checkEntityPostEffect
- 源码定位:L220
- 返回类型:void
- 修饰符:public
参数:
- cameraEntity: Entity
说明:
TODO
private void setPostEffect(Identifier id) @ L237
- 方法名:setPostEffect
- 源码定位:L237
- 返回类型:void
- 修饰符:private
参数:
- id: Identifier
说明:
TODO
public void processBlurEffect() @ L242
- 方法名:processBlurEffect
- 源码定位:L242
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void preloadUiShader(ResourceProvider resourceProvider) @ L249
- 方法名:preloadUiShader
- 源码定位:L249
- 返回类型:void
- 修饰符:public
参数:
- resourceProvider: ResourceProvider
说明:
TODO
public void tick() @ L273
- 方法名:tick
- 源码定位:L273
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public Identifier currentPostEffect() @ L310
- 方法名:currentPostEffect
- 源码定位:L310
- 返回类型:Identifier
- 修饰符:public
参数:
- 无
说明:
TODO
public void resize(int width, int height) @ L314
- 方法名:resize
- 源码定位:L314
- 返回类型:void
- 修饰符:public
参数:
- width: int
- height: int
说明:
TODO
private void bobHurt(CameraRenderState cameraState, PoseStack poseStack) @ L321
- 方法名:bobHurt
- 源码定位:L321
- 返回类型:void
- 修饰符:private
参数:
- cameraState: CameraRenderState
- poseStack: PoseStack
说明:
TODO
private void bobView(CameraRenderState cameraState, PoseStack poseStack) @ L343
- 方法名:bobView
- 源码定位:L343
- 返回类型:void
- 修饰符:private
参数:
- cameraState: CameraRenderState
- poseStack: PoseStack
说明:
TODO
private void renderItemInHand(CameraRenderState cameraState, float deltaPartialTick, Matrix4fc modelViewMatrix) @ L357
- 方法名:renderItemInHand
- 源码定位:L357
- 返回类型:void
- 修饰符:private
参数:
- cameraState: CameraRenderState
- deltaPartialTick: float
- modelViewMatrix: Matrix4fc
说明:
TODO
public static float getNightVisionScale(LivingEntity camera, float a) @ L390
- 方法名:getNightVisionScale
- 源码定位:L390
- 返回类型:float
- 修饰符:public static
参数:
- camera: LivingEntity
- a: float
说明:
TODO
public void update(DeltaTracker deltaTracker, boolean advanceGameTime) @ L395
- 方法名:update
- 源码定位:L395
- 返回类型:void
- 修饰符:public
参数:
- deltaTracker: DeltaTracker
- advanceGameTime: boolean
说明:
TODO
public void extract(DeltaTracker deltaTracker, boolean advanceGameTime) @ L407
- 方法名:extract
- 源码定位:L407
- 返回类型:void
- 修饰符:public
参数:
- deltaTracker: DeltaTracker
- advanceGameTime: boolean
说明:
TODO
public void render(DeltaTracker deltaTracker, boolean advanceGameTime) @ L423
- 方法名:render
- 源码定位:L423
- 返回类型:void
- 修饰符:public
参数:
- deltaTracker: DeltaTracker
- advanceGameTime: boolean
说明:
TODO
private void extractGui(DeltaTracker deltaTracker, boolean shouldRenderLevel, boolean resourcesLoaded) @ L480
- 方法名:extractGui
- 源码定位:L480
- 返回类型:void
- 修饰符:private
参数:
- deltaTracker: DeltaTracker
- shouldRenderLevel: boolean
- resourcesLoaded: boolean
说明:
TODO
private void renderActiveTextDebug() @ L560
- 方法名:renderActiveTextDebug
- 源码定位:L560
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
private void tryTakeScreenshotIfNeeded() @ L610
- 方法名:tryTakeScreenshotIfNeeded
- 源码定位:L610
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
private void takeAutoScreenshot(Path screenshotFile) @ L629
- 方法名:takeAutoScreenshot
- 源码定位:L629
- 返回类型:void
- 修饰符:private
参数:
- screenshotFile: Path
说明:
TODO
private boolean shouldRenderBlockOutline() @ L656
- 方法名:shouldRenderBlockOutline
- 源码定位:L656
- 返回类型:boolean
- 修饰符:private
参数:
- 无
说明:
TODO
public void renderLevel(DeltaTracker deltaTracker) @ L683
- 方法名:renderLevel
- 源码定位:L683
- 返回类型:void
- 修饰符:public
参数:
- deltaTracker: DeltaTracker
说明:
TODO
private void extractWindow() @ L756
- 方法名:extractWindow
- 源码定位:L756
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
private void extractOptions() @ L767
- 方法名:extractOptions
- 源码定位:L767
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
private void extractCamera(DeltaTracker deltaTracker, float worldPartialTicks, float cameraEntityPartialTicks) @ L791
- 方法名:extractCamera
- 源码定位:L791
- 返回类型:void
- 修饰符:private
参数:
- deltaTracker: DeltaTracker
- worldPartialTicks: float
- cameraEntityPartialTicks: float
说明:
TODO
public void resetData() @ L805
- 方法名:resetData
- 源码定位:L805
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void displayItemActivation(ItemStack itemStack) @ L812
- 方法名:displayItemActivation
- 源码定位:L812
- 返回类型:void
- 修饰符:public
参数:
- itemStack: ItemStack
说明:
TODO
public Minecraft getMinecraft() @ L816
- 方法名:getMinecraft
- 源码定位:L816
- 返回类型:Minecraft
- 修饰符:public
参数:
- 无
说明:
TODO
public float getBossOverlayWorldDarkening(float a) @ L820
- 方法名:getBossOverlayWorldDarkening
- 源码定位:L820
- 返回类型:float
- 修饰符:public
参数:
- a: float
说明:
TODO
public Camera getMainCamera() @ L824
- 方法名:getMainCamera
- 源码定位:L824
- 返回类型:Camera
- 修饰符:public
参数:
- 无
说明:
TODO
public GpuTextureView lightmap() @ L828
- 方法名:lightmap
- 源码定位:L828
- 返回类型:GpuTextureView
- 修饰符:public
参数:
- 无
说明:
TODO
public GpuTextureView levelLightmap() @ L832
- 方法名:levelLightmap
- 源码定位:L832
- 返回类型:GpuTextureView
- 修饰符:public
参数:
- 无
说明:
TODO
public OverlayTexture overlayTexture() @ L836
- 方法名:overlayTexture
- 源码定位:L836
- 返回类型:OverlayTexture
- 修饰符:public
参数:
- 无
说明:
TODO
public Vec3 projectPointToScreen(Vec3 point) @ L840
- 方法名:projectPointToScreen
- 源码定位:L840
- 返回类型:Vec3
- 修饰符:public
参数:
- point: Vec3
说明:
TODO
public double projectHorizonToScreen() @ L849
- 方法名:projectHorizonToScreen
- 源码定位:L849
- 返回类型:double
- 修饰符:public
参数:
- 无
说明:
TODO
public GlobalSettingsUniform getGlobalSettingsUniform() @ L862
- 方法名:getGlobalSettingsUniform
- 源码定位:L862
- 返回类型:GlobalSettingsUniform
- 修饰符:public
参数:
- 无
说明:
TODO
public Lighting getLighting() @ L866
- 方法名:getLighting
- 源码定位:L866
- 返回类型:Lighting
- 修饰符:public
参数:
- 无
说明:
TODO
public void setLevel(ClientLevel level) @ L870
- 方法名:setLevel
- 源码定位:L870
- 返回类型:void
- 修饰符:public
参数:
- level: ClientLevel
说明:
TODO
public Panorama getPanorama() @ L878
- 方法名:getPanorama
- 源码定位:L878
- 返回类型:Panorama
- 修饰符:public
参数:
- 无
说明:
TODO
public void registerPanoramaTextures(TextureManager textureManager) @ L882
- 方法名:registerPanoramaTextures
- 源码定位:L882
- 返回类型:void
- 修饰符:public
参数:
- textureManager: TextureManager
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class GameRenderer implements AutoCloseable, TrackedWaypoint.Projector {
private static final Identifier BLUR_POST_CHAIN_ID = Identifier.withDefaultNamespace("blur");
public static final int MAX_BLUR_RADIUS = 10;
private static final Logger LOGGER = LogUtils.getLogger();
public static final float PROJECTION_3D_HUD_Z_FAR = 100.0F;
private static final float PORTAL_SPINNING_SPEED = 20.0F;
private static final float NAUSEA_SPINNING_SPEED = 7.0F;
private final Minecraft minecraft;
private final GameRenderState gameRenderState = new GameRenderState();
private final RandomSource random = RandomSource.create();
public final ItemInHandRenderer itemInHandRenderer;
private final ScreenEffectRenderer screenEffectRenderer;
private final RenderBuffers renderBuffers;
private float spinningEffectTime;
private float spinningEffectSpeed;
private float bossOverlayWorldDarkening;
private float bossOverlayWorldDarkeningO;
private boolean renderBlockOutline = true;
private long lastScreenshotAttempt;
private boolean hasWorldScreenshot;
private final Lightmap lightmap = new Lightmap();
private final LightmapRenderStateExtractor lightmapRenderStateExtractor;
private final UiLightmap uiLightmap = new UiLightmap();
private boolean useUiLightmap;
private final OverlayTexture overlayTexture = new OverlayTexture();
protected final Panorama panorama = new Panorama();
private final CrossFrameResourcePool resourcePool = new CrossFrameResourcePool(3);
private final FogRenderer fogRenderer = new FogRenderer();
private final GuiRenderer guiRenderer;
private final SubmitNodeStorage submitNodeStorage;
private final FeatureRenderDispatcher featureRenderDispatcher;
private @Nullable Identifier postEffectId;
private boolean effectActive;
private final Camera mainCamera = new Camera();
private final Projection hudProjection = new Projection();
private final Lighting lighting = new Lighting();
private final GlobalSettingsUniform globalSettingsUniform = new GlobalSettingsUniform();
private final ProjectionMatrixBuffer levelProjectionMatrixBuffer = new ProjectionMatrixBuffer("level");
private final ProjectionMatrixBuffer hud3dProjectionMatrixBuffer = new ProjectionMatrixBuffer("3d hud");
public GameRenderer(Minecraft minecraft, ItemInHandRenderer itemInHandRenderer, RenderBuffers renderBuffers, ModelManager modelManager) {
this.minecraft = minecraft;
this.itemInHandRenderer = itemInHandRenderer;
this.lightmapRenderStateExtractor = new LightmapRenderStateExtractor(this, minecraft);
this.renderBuffers = renderBuffers;
MultiBufferSource.BufferSource bufferSource = renderBuffers.bufferSource();
AtlasManager atlasManager = minecraft.getAtlasManager();
this.submitNodeStorage = new SubmitNodeStorage();
this.featureRenderDispatcher = new FeatureRenderDispatcher(
this.submitNodeStorage,
modelManager,
bufferSource,
atlasManager,
renderBuffers.outlineBufferSource(),
renderBuffers.crumblingBufferSource(),
minecraft.font,
this.gameRenderState
);
this.guiRenderer = new GuiRenderer(
this.gameRenderState.guiRenderState,
bufferSource,
this.submitNodeStorage,
this.featureRenderDispatcher,
List.of(
new GuiEntityRenderer(bufferSource, minecraft.getEntityRenderDispatcher()),
new GuiSkinRenderer(bufferSource),
new GuiBookModelRenderer(bufferSource),
new GuiBannerResultRenderer(bufferSource, atlasManager),
new GuiSignRenderer(bufferSource, atlasManager),
new GuiProfilerChartRenderer(bufferSource)
)
);
this.screenEffectRenderer = new ScreenEffectRenderer(minecraft, atlasManager, bufferSource);
}
@Override
public void close() {
this.globalSettingsUniform.close();
this.lightmap.close();
this.overlayTexture.close();
this.uiLightmap.close();
this.resourcePool.close();
this.guiRenderer.close();
this.levelProjectionMatrixBuffer.close();
this.hud3dProjectionMatrixBuffer.close();
this.lighting.close();
this.fogRenderer.close();
this.featureRenderDispatcher.close();
}
public SubmitNodeStorage getSubmitNodeStorage() {
return this.submitNodeStorage;
}
public FeatureRenderDispatcher getFeatureRenderDispatcher() {
return this.featureRenderDispatcher;
}
public GameRenderState getGameRenderState() {
return this.gameRenderState;
}
public void setRenderBlockOutline(boolean renderBlockOutline) {
this.renderBlockOutline = renderBlockOutline;
}
public void clearPostEffect() {
this.postEffectId = null;
this.effectActive = false;
}
public void togglePostEffect() {
this.effectActive = !this.effectActive;
}
public void checkEntityPostEffect(@Nullable Entity cameraEntity) {
switch (cameraEntity) {
case Creeper ignored:
this.setPostEffect(Identifier.withDefaultNamespace("creeper"));
break;
case Spider ignoredx:
this.setPostEffect(Identifier.withDefaultNamespace("spider"));
break;
case EnderMan ignoredxx:
this.setPostEffect(Identifier.withDefaultNamespace("invert"));
break;
case null:
default:
this.clearPostEffect();
}
}
private void setPostEffect(Identifier id) {
this.postEffectId = id;
this.effectActive = true;
}
public void processBlurEffect() {
PostChain postChain = this.minecraft.getShaderManager().getPostChain(BLUR_POST_CHAIN_ID, LevelTargetBundle.MAIN_TARGETS);
if (postChain != null) {
postChain.process(this.minecraft.getMainRenderTarget(), this.resourcePool);
}
}
public void preloadUiShader(ResourceProvider resourceProvider) {
GpuDevice device = RenderSystem.getDevice();
ShaderSource shaderSource = (id, type) -> {
Identifier location = type.idConverter().idToFile(id);
try {
String t$;
try (Reader reader = resourceProvider.getResourceOrThrow(location).openAsReader()) {
t$ = IOUtils.toString(reader);
}
return t$;
} catch (IOException var9) {
LOGGER.error("Coudln't preload {} shader {}: {}", type, id, var9);
return null;
}
};
device.precompilePipeline(RenderPipelines.GUI, shaderSource);
device.precompilePipeline(RenderPipelines.GUI_TEXTURED, shaderSource);
if (TracyClient.isAvailable()) {
device.precompilePipeline(RenderPipelines.TRACY_BLIT, shaderSource);
}
}
public void tick() {
this.lightmapRenderStateExtractor.tick();
LocalPlayer player = this.minecraft.player;
if (this.mainCamera.entity() == null) {
this.mainCamera.setEntity(player);
}
this.mainCamera.tick();
this.itemInHandRenderer.tick();
float portalIntensity = player.portalEffectIntensity;
float nauseaIntensity = player.getEffectBlendFactor(MobEffects.NAUSEA, 1.0F);
if (!(portalIntensity > 0.0F) && !(nauseaIntensity > 0.0F)) {
this.spinningEffectSpeed = 0.0F;
} else {
this.spinningEffectSpeed = (portalIntensity * 20.0F + nauseaIntensity * 7.0F) / (portalIntensity + nauseaIntensity);
this.spinningEffectTime = this.spinningEffectTime + this.spinningEffectSpeed;
}
if (this.minecraft.level.tickRateManager().runsNormally()) {
this.bossOverlayWorldDarkeningO = this.bossOverlayWorldDarkening;
if (this.minecraft.gui.getBossOverlay().shouldDarkenScreen()) {
this.bossOverlayWorldDarkening += 0.05F;
if (this.bossOverlayWorldDarkening > 1.0F) {
this.bossOverlayWorldDarkening = 1.0F;
}
} else if (this.bossOverlayWorldDarkening > 0.0F) {
this.bossOverlayWorldDarkening -= 0.0125F;
}
this.screenEffectRenderer.tick();
ProfilerFiller profiler = Profiler.get();
profiler.push("levelRenderer");
this.minecraft.levelRenderer.tick(this.mainCamera);
profiler.pop();
}
}
public @Nullable Identifier currentPostEffect() {
return this.postEffectId;
}
public void resize(int width, int height) {
this.resourcePool.clear();
RenderTarget mainRenderTarget = this.minecraft.getMainRenderTarget();
mainRenderTarget.resize(width, height);
this.minecraft.levelRenderer.resize(width, height);
}
private void bobHurt(CameraRenderState cameraState, PoseStack poseStack) {
if (cameraState.entityRenderState.isLiving) {
float hurt = cameraState.entityRenderState.hurtTime;
if (cameraState.entityRenderState.isDeadOrDying) {
float duration = Math.min(cameraState.entityRenderState.deathTime, 20.0F);
poseStack.mulPose(Axis.ZP.rotationDegrees(40.0F - 8000.0F / (duration + 200.0F)));
}
if (hurt < 0.0F) {
return;
}
hurt /= cameraState.entityRenderState.hurtDuration;
hurt = Mth.sin(hurt * hurt * hurt * hurt * (float) Math.PI);
float rr = cameraState.entityRenderState.hurtDir;
poseStack.mulPose(Axis.YP.rotationDegrees(-rr));
float tiltAmount = (float)(-hurt * 14.0 * this.gameRenderState.optionsRenderState.damageTiltStrength);
poseStack.mulPose(Axis.ZP.rotationDegrees(tiltAmount));
poseStack.mulPose(Axis.YP.rotationDegrees(rr));
}
}
private void bobView(CameraRenderState cameraState, PoseStack poseStack) {
if (cameraState.entityRenderState.isPlayer) {
float backwardsInterpolatedWalkDistance = cameraState.entityRenderState.backwardsInterpolatedWalkDistance;
float bob = cameraState.entityRenderState.bob;
poseStack.translate(
Mth.sin(backwardsInterpolatedWalkDistance * (float) Math.PI) * bob * 0.5F,
-Math.abs(Mth.cos(backwardsInterpolatedWalkDistance * (float) Math.PI) * bob),
0.0F
);
poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.sin(backwardsInterpolatedWalkDistance * (float) Math.PI) * bob * 3.0F));
poseStack.mulPose(Axis.XP.rotationDegrees(Math.abs(Mth.cos(backwardsInterpolatedWalkDistance * (float) Math.PI - 0.2F) * bob) * 5.0F));
}
}
private void renderItemInHand(CameraRenderState cameraState, float deltaPartialTick, Matrix4fc modelViewMatrix) {
if (!cameraState.isPanoramicMode) {
this.featureRenderDispatcher.renderAllFeatures();
this.renderBuffers.bufferSource().endBatch();
PoseStack poseStack = new PoseStack();
poseStack.pushPose();
poseStack.mulPose(modelViewMatrix.invert(new Matrix4f()));
Matrix4fStack modelViewStack = RenderSystem.getModelViewStack();
modelViewStack.pushMatrix().mul(modelViewMatrix);
this.bobHurt(cameraState, poseStack);
if (this.gameRenderState.optionsRenderState.bobView) {
this.bobView(cameraState, poseStack);
}
if (this.gameRenderState.optionsRenderState.cameraType.isFirstPerson()
&& !cameraState.entityRenderState.isSleeping
&& !this.gameRenderState.optionsRenderState.hideGui
&& this.minecraft.gameMode.getPlayerMode() != GameType.SPECTATOR) {
this.itemInHandRenderer
.renderHandsWithItems(
deltaPartialTick,
poseStack,
this.minecraft.gameRenderer.getSubmitNodeStorage(),
this.minecraft.player,
this.minecraft.getEntityRenderDispatcher().getPackedLightCoords(this.minecraft.player, deltaPartialTick)
);
}
modelViewStack.popMatrix();
poseStack.popPose();
}
}
public static float getNightVisionScale(LivingEntity camera, float a) {
MobEffectInstance nightVision = camera.getEffect(MobEffects.NIGHT_VISION);
return !nightVision.endsWithin(200) ? 1.0F : 0.7F + Mth.sin((nightVision.getDuration() - a) * (float) Math.PI * 0.2F) * 0.3F;
}
public void update(DeltaTracker deltaTracker, boolean advanceGameTime) {
ProfilerFiller profiler = Profiler.get();
profiler.push("camera");
this.mainCamera.update(deltaTracker);
profiler.pop();
boolean resourcesLoaded = this.minecraft.isGameLoadFinished();
boolean shouldRenderLevel = resourcesLoaded && advanceGameTime && this.minecraft.level != null;
if (shouldRenderLevel) {
this.minecraft.levelRenderer.update(this.mainCamera);
}
}
public void extract(DeltaTracker deltaTracker, boolean advanceGameTime) {
boolean resourcesLoaded = this.minecraft.isGameLoadFinished();
boolean shouldRenderLevel = resourcesLoaded && advanceGameTime && this.minecraft.level != null;
float worldPartialTicks = deltaTracker.getGameTimeDeltaPartialTick(false);
this.extractWindow();
this.extractOptions();
if (shouldRenderLevel) {
this.lightmapRenderStateExtractor.extract(this.gameRenderState.lightmapRenderState, 1.0F);
float cameraEntityPartialTicks = this.mainCamera.getCameraEntityPartialTicks(deltaTracker);
this.extractCamera(deltaTracker, worldPartialTicks, cameraEntityPartialTicks);
this.minecraft.levelRenderer.extractLevel(deltaTracker, this.mainCamera, worldPartialTicks);
}
this.extractGui(deltaTracker, shouldRenderLevel, resourcesLoaded);
}
public void render(DeltaTracker deltaTracker, boolean advanceGameTime) {
ProfilerFiller profiler = Profiler.get();
profiler.push("render");
if (this.gameRenderState.windowRenderState.isResized) {
this.resize(this.gameRenderState.windowRenderState.width, this.gameRenderState.windowRenderState.height);
}
RenderTarget mainRenderTarget = this.minecraft.getMainRenderTarget();
RenderSystem.getDevice()
.createCommandEncoder()
.clearColorAndDepthTextures(
mainRenderTarget.getColorTexture(), this.gameRenderState.guiRenderState.clearColorOverride, mainRenderTarget.getDepthTexture(), 1.0
);
boolean resourcesLoaded = this.minecraft.isGameLoadFinished();
boolean shouldRenderLevel = resourcesLoaded && advanceGameTime && this.minecraft.level != null;
this.globalSettingsUniform
.update(
this.gameRenderState.windowRenderState.width,
this.gameRenderState.windowRenderState.height,
this.gameRenderState.optionsRenderState.glintStrength,
this.minecraft.level == null ? 0L : this.minecraft.level.getGameTime(),
deltaTracker,
this.gameRenderState.optionsRenderState.menuBackgroundBlurriness,
this.gameRenderState.levelRenderState.cameraRenderState.pos,
this.gameRenderState.optionsRenderState.textureFiltering == TextureFilteringMethod.RGSS
);
if (shouldRenderLevel) {
this.lightmap.render(this.gameRenderState.lightmapRenderState);
profiler.push("world");
this.renderLevel(deltaTracker);
this.tryTakeScreenshotIfNeeded();
this.minecraft.levelRenderer.doEntityOutline();
if (this.postEffectId != null && this.effectActive) {
PostChain postChain = this.minecraft.getShaderManager().getPostChain(this.postEffectId, LevelTargetBundle.MAIN_TARGETS);
if (postChain != null) {
postChain.process(this.minecraft.getMainRenderTarget(), this.resourcePool);
}
}
profiler.pop();
}
this.fogRenderer.endFrame();
RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(mainRenderTarget.getDepthTexture(), 1.0);
this.getLighting().setupFor(Lighting.Entry.ITEMS_3D);
this.useUiLightmap = true;
profiler.push("gui");
this.guiRenderer.render(this.fogRenderer.getBuffer(FogRenderer.FogMode.NONE));
this.guiRenderer.endFrame();
profiler.pop();
this.useUiLightmap = false;
this.submitNodeStorage.endFrame();
this.featureRenderDispatcher.endFrame();
this.resourcePool.endFrame();
profiler.pop();
}
private void extractGui(DeltaTracker deltaTracker, boolean shouldRenderLevel, boolean resourcesLoaded) {
ProfilerFiller profiler = Profiler.get();
int xMouse = (int)this.minecraft.mouseHandler.getScaledXPos(this.minecraft.getWindow());
int yMouse = (int)this.minecraft.mouseHandler.getScaledYPos(this.minecraft.getWindow());
profiler.push("gui");
this.gameRenderState.guiRenderState.reset();
GuiGraphicsExtractor graphics = new GuiGraphicsExtractor(this.minecraft, this.gameRenderState.guiRenderState, xMouse, yMouse);
if (shouldRenderLevel) {
profiler.push("inGameGui");
this.minecraft.gui.extractRenderState(graphics, deltaTracker);
profiler.pop();
}
if (this.minecraft.getOverlay() != null) {
profiler.push("overlay");
try {
this.minecraft.getOverlay().extractRenderState(graphics, xMouse, yMouse, deltaTracker.getGameTimeDeltaTicks());
} catch (Throwable var13) {
CrashReport report = CrashReport.forThrowable(var13, "Extracting overlay render state");
CrashReportCategory category = report.addCategory("Overlay details");
category.setDetail("Overlay name", () -> this.minecraft.getOverlay().getClass().getCanonicalName());
throw new ReportedException(report);
}
profiler.pop();
} else if (resourcesLoaded && this.minecraft.screen != null) {
profiler.push("screen");
try {
this.minecraft.screen.extractRenderStateWithTooltipAndSubtitles(graphics, xMouse, yMouse, deltaTracker.getGameTimeDeltaTicks());
} catch (Throwable var12) {
CrashReport report = CrashReport.forThrowable(var12, "Rendering screen");
CrashReportCategory category = report.addCategory("Screen render details");
category.setDetail("Screen name", () -> this.minecraft.screen.getClass().getCanonicalName());
this.minecraft.mouseHandler.fillMousePositionDetails(category, this.minecraft.getWindow());
throw new ReportedException(report);
}
if (SharedConstants.DEBUG_CURSOR_POS) {
this.minecraft.mouseHandler.drawDebugMouseInfo(this.minecraft.font, graphics);
}
try {
if (this.minecraft.screen != null) {
this.minecraft.screen.handleDelayedNarration();
}
} catch (Throwable var15) {
CrashReport report = CrashReport.forThrowable(var15, "Narrating screen");
CrashReportCategory category = report.addCategory("Screen details");
category.setDetail("Screen name", () -> this.minecraft.screen.getClass().getCanonicalName());
throw new ReportedException(report);
}
profiler.pop();
}
if (shouldRenderLevel) {
this.minecraft.gui.extractSavingIndicator(graphics, deltaTracker);
}
if (resourcesLoaded) {
try (Zone ignored = profiler.zone("toasts")) {
this.minecraft.getToastManager().extractRenderState(graphics);
}
}
if (!(this.minecraft.screen instanceof DebugOptionsScreen)) {
this.minecraft.gui.extractDebugOverlay(graphics);
}
this.minecraft.gui.extractDeferredSubtitles();
if (SharedConstants.DEBUG_ACTIVE_TEXT_AREAS) {
this.renderActiveTextDebug();
}
profiler.pop();
graphics.applyCursor(this.minecraft.getWindow());
}
private void renderActiveTextDebug() {
GuiRenderState guiRenderState = this.gameRenderState.guiRenderState;
guiRenderState.nextStratum();
guiRenderState.forEachText(
text -> text.ensurePrepared()
.visit(
new Font.GlyphVisitor() {
private int index;
{
Objects.requireNonNull(GameRenderer.this);
}
@Override
public void acceptGlyph(TextRenderable.Styled glyph) {
this.renderDebugMarkers(glyph, false);
}
@Override
public void acceptEmptyArea(EmptyArea empty) {
this.renderDebugMarkers(empty, true);
}
private void renderDebugMarkers(ActiveArea glyph, boolean isEmpty) {
int intensity = (isEmpty ? 128 : 255) - (this.index++ & 1) * 64;
Style style = glyph.style();
int red = style.getClickEvent() != null ? intensity : 0;
int green = style.getHoverEvent() != null ? intensity : 0;
int blue = red != 0 && green != 0 ? 0 : intensity;
int color = ARGB.color(128, red, green, blue);
guiRenderState.addGuiElement(
new ColoredRectangleRenderState(
RenderPipelines.GUI,
TextureSetup.noTexture(),
text.pose,
(int)glyph.activeLeft(),
(int)glyph.activeTop(),
(int)glyph.activeRight(),
(int)glyph.activeBottom(),
color,
color,
text.scissor
)
);
}
}
)
);
}
private void tryTakeScreenshotIfNeeded() {
if (!this.hasWorldScreenshot && this.minecraft.isLocalServer()) {
long time = Util.getMillis();
if (time - this.lastScreenshotAttempt >= 1000L) {
this.lastScreenshotAttempt = time;
IntegratedServer server = this.minecraft.getSingleplayerServer();
if (server != null && !server.isStopped()) {
server.getWorldScreenshotFile().ifPresent(path -> {
if (Files.isRegularFile(path)) {
this.hasWorldScreenshot = true;
} else {
this.takeAutoScreenshot(path);
}
});
}
}
}
}
private void takeAutoScreenshot(Path screenshotFile) {
if (this.minecraft.levelRenderer.countRenderedSections() > 10 && this.minecraft.levelRenderer.hasRenderedAllSections()) {
Screenshot.takeScreenshot(this.minecraft.getMainRenderTarget(), screenshot -> Util.ioPool().execute(() -> {
int width = screenshot.getWidth();
int height = screenshot.getHeight();
int x = 0;
int y = 0;
if (width > height) {
x = (width - height) / 2;
width = height;
} else {
y = (height - width) / 2;
height = width;
}
try (NativeImage scaled = new NativeImage(64, 64, false)) {
screenshot.resizeSubRectTo(x, y, width, height, scaled);
scaled.writeToFile(screenshotFile);
} catch (IOException var16) {
LOGGER.warn("Couldn't save auto screenshot", (Throwable)var16);
} finally {
screenshot.close();
}
}));
}
}
private boolean shouldRenderBlockOutline() {
if (!this.renderBlockOutline) {
return false;
} else {
Entity cameraEntity = this.minecraft.getCameraEntity();
boolean renderOutline = cameraEntity instanceof Player && !this.minecraft.options.hideGui;
if (renderOutline && !((Player)cameraEntity).getAbilities().mayBuild) {
ItemStack itemStack = ((LivingEntity)cameraEntity).getMainHandItem();
HitResult hitResult = this.minecraft.hitResult;
if (hitResult != null && hitResult.getType() == HitResult.Type.BLOCK) {
BlockPos pos = ((BlockHitResult)hitResult).getBlockPos();
BlockState blockState = this.minecraft.level.getBlockState(pos);
if (this.minecraft.gameMode.getPlayerMode() == GameType.SPECTATOR) {
renderOutline = blockState.getMenuProvider(this.minecraft.level, pos) != null;
} else {
BlockInWorld blockInWorld = new BlockInWorld(this.minecraft.level, pos, false);
Registry<Block> blockRegistry = this.minecraft.level.registryAccess().lookupOrThrow(Registries.BLOCK);
renderOutline = !itemStack.isEmpty()
&& (itemStack.canBreakBlockInAdventureMode(blockInWorld) || itemStack.canPlaceOnBlockInAdventureMode(blockInWorld));
}
}
}
return renderOutline;
}
}
public void renderLevel(DeltaTracker deltaTracker) {
float worldPartialTicks = deltaTracker.getGameTimeDeltaPartialTick(false);
float cameraEntityPartialTicks = this.mainCamera.getCameraEntityPartialTicks(deltaTracker);
LocalPlayer player = this.minecraft.player;
ProfilerFiller profiler = Profiler.get();
boolean renderOutline = this.shouldRenderBlockOutline();
OptionsRenderState optionsState = this.gameRenderState.optionsRenderState;
CameraRenderState cameraState = this.gameRenderState.levelRenderState.cameraRenderState;
Matrix4fc modelViewMatrix = cameraState.viewRotationMatrix;
profiler.push("matrices");
Matrix4f projectionMatrix = new Matrix4f(cameraState.projectionMatrix);
PoseStack bobStack = new PoseStack();
this.bobHurt(cameraState, bobStack);
if (optionsState.bobView) {
this.bobView(cameraState, bobStack);
}
projectionMatrix.mul(bobStack.last().pose());
float screenEffectScale = optionsState.screenEffectScale;
float portalIntensity = Mth.lerp(worldPartialTicks, player.oPortalEffectIntensity, player.portalEffectIntensity);
float nauseaIntensity = player.getEffectBlendFactor(MobEffects.NAUSEA, worldPartialTicks);
float spinningEffectIntensity = Math.max(portalIntensity, nauseaIntensity) * (screenEffectScale * screenEffectScale);
if (spinningEffectIntensity > 0.0F) {
float skew = 5.0F / (spinningEffectIntensity * spinningEffectIntensity + 5.0F) - spinningEffectIntensity * 0.04F;
skew *= skew;
Vector3f axis = new Vector3f(0.0F, Mth.SQRT_OF_TWO / 2.0F, Mth.SQRT_OF_TWO / 2.0F);
float angle = (this.spinningEffectTime + worldPartialTicks * this.spinningEffectSpeed) * (float) (Math.PI / 180.0);
projectionMatrix.rotate(angle, axis);
projectionMatrix.scale(1.0F / skew, 1.0F, 1.0F);
projectionMatrix.rotate(-angle, axis);
}
RenderSystem.setProjectionMatrix(this.levelProjectionMatrixBuffer.getBuffer(projectionMatrix), ProjectionType.PERSPECTIVE);
profiler.popPush("fog");
this.fogRenderer.updateBuffer(cameraState.fogData);
GpuBufferSlice terrainFog = this.fogRenderer.getBuffer(FogRenderer.FogMode.WORLD);
profiler.popPush("level");
boolean shouldCreateBossFog = this.minecraft.gui.getBossOverlay().shouldCreateWorldFog();
this.minecraft
.levelRenderer
.renderLevel(
this.resourcePool,
deltaTracker,
renderOutline,
cameraState,
modelViewMatrix,
terrainFog,
cameraState.fogData.color,
!shouldCreateBossFog,
this.gameRenderState.levelRenderState.chunkSectionsToRender
);
profiler.popPush("hand");
boolean isSleeping = cameraState.entityRenderState.isSleeping;
this.hudProjection
.setupPerspective(0.05F, 100.0F, cameraState.hudFov, this.gameRenderState.windowRenderState.width, this.gameRenderState.windowRenderState.height);
RenderSystem.setProjectionMatrix(this.hud3dProjectionMatrixBuffer.getBuffer(this.hudProjection), ProjectionType.PERSPECTIVE);
RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(this.minecraft.getMainRenderTarget().getDepthTexture(), 1.0);
this.renderItemInHand(cameraState, cameraEntityPartialTicks, modelViewMatrix);
profiler.popPush("screenEffects");
MultiBufferSource.BufferSource bufferSource = this.renderBuffers.bufferSource();
this.screenEffectRenderer
.renderScreenEffect(optionsState.cameraType.isFirstPerson(), isSleeping, worldPartialTicks, this.submitNodeStorage, optionsState.hideGui);
this.featureRenderDispatcher.renderAllFeatures();
bufferSource.endBatch();
profiler.pop();
RenderSystem.setShaderFog(this.fogRenderer.getBuffer(FogRenderer.FogMode.NONE));
if (this.minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.THREE_DIMENSIONAL_CROSSHAIR)
&& optionsState.cameraType.isFirstPerson()
&& !optionsState.hideGui) {
this.minecraft.getDebugOverlay().render3dCrosshair(cameraState, this.gameRenderState.windowRenderState.guiScale);
}
}
private void extractWindow() {
WindowRenderState windowState = this.gameRenderState.windowRenderState;
Window window = this.minecraft.getWindow();
windowState.width = window.getWidth();
windowState.height = window.getHeight();
windowState.guiScale = window.getGuiScale();
windowState.appropriateLineWidth = window.getAppropriateLineWidth();
windowState.isMinimized = window.isMinimized();
windowState.isResized = window.isResized();
}
private void extractOptions() {
OptionsRenderState optionsState = this.gameRenderState.optionsRenderState;
Options options = this.minecraft.options;
optionsState.cloudRange = options.cloudRange().get();
optionsState.cutoutLeaves = options.cutoutLeaves().get();
optionsState.improvedTransparency = options.improvedTransparency().get();
optionsState.ambientOcclusion = options.ambientOcclusion().get();
optionsState.menuBackgroundBlurriness = options.getMenuBackgroundBlurriness();
optionsState.panoramaSpeed = options.panoramaSpeed().get();
optionsState.maxAnisotropyValue = options.maxAnisotropyValue();
optionsState.textureFiltering = options.textureFiltering().get();
optionsState.bobView = options.bobView().get();
optionsState.hideGui = options.hideGui;
optionsState.screenEffectScale = options.screenEffectScale().get().floatValue();
optionsState.glintSpeed = options.glintSpeed().get();
optionsState.glintStrength = options.glintStrength().get();
optionsState.damageTiltStrength = options.damageTiltStrength().get();
optionsState.backgroundForChatOnly = options.backgroundForChatOnly().get();
optionsState.textBackgroundOpacity = options.textBackgroundOpacity().get().floatValue();
optionsState.cloudStatus = options.getCloudStatus();
optionsState.cameraType = options.getCameraType();
optionsState.renderDistance = options.getEffectiveRenderDistance();
}
private void extractCamera(DeltaTracker deltaTracker, float worldPartialTicks, float cameraEntityPartialTicks) {
CameraRenderState cameraState = this.gameRenderState.levelRenderState.cameraRenderState;
this.mainCamera.extractRenderState(cameraState, cameraEntityPartialTicks);
cameraState.fogType = this.mainCamera.getFluidInCamera();
cameraState.fogData = this.fogRenderer
.setupFog(
this.mainCamera,
this.minecraft.options.getEffectiveRenderDistance(),
deltaTracker,
this.getBossOverlayWorldDarkening(worldPartialTicks),
this.minecraft.level
);
}
public void resetData() {
this.screenEffectRenderer.resetItemActivation();
this.minecraft.getMapTextureManager().resetData();
this.mainCamera.reset();
this.hasWorldScreenshot = false;
}
public void displayItemActivation(ItemStack itemStack) {
this.screenEffectRenderer.displayItemActivation(itemStack, this.random);
}
public Minecraft getMinecraft() {
return this.minecraft;
}
public float getBossOverlayWorldDarkening(float a) {
return Mth.lerp(a, this.bossOverlayWorldDarkeningO, this.bossOverlayWorldDarkening);
}
public Camera getMainCamera() {
return this.mainCamera;
}
public GpuTextureView lightmap() {
return this.useUiLightmap ? this.uiLightmap.getTextureView() : this.lightmap.getTextureView();
}
public GpuTextureView levelLightmap() {
return this.lightmap.getTextureView();
}
public OverlayTexture overlayTexture() {
return this.overlayTexture;
}
@Override
public Vec3 projectPointToScreen(Vec3 point) {
Matrix4f mvp = this.mainCamera.getViewRotationProjectionMatrix(new Matrix4f());
Vec3 camPos = this.mainCamera.position();
Vec3 offset = point.subtract(camPos);
Vector3f vector3f = mvp.transformProject(offset.toVector3f());
return new Vec3(vector3f);
}
@Override
public double projectHorizonToScreen() {
float xRot = this.mainCamera.xRot();
if (xRot <= -90.0F) {
return Double.NEGATIVE_INFINITY;
} else if (xRot >= 90.0F) {
return Double.POSITIVE_INFINITY;
} else {
float fov = this.mainCamera.getFov();
return Math.tan(xRot * (float) (Math.PI / 180.0)) / Math.tan(fov / 2.0F * (float) (Math.PI / 180.0));
}
}
public GlobalSettingsUniform getGlobalSettingsUniform() {
return this.globalSettingsUniform;
}
public Lighting getLighting() {
return this.lighting;
}
public void setLevel(@Nullable ClientLevel level) {
if (level != null) {
this.lighting.updateLevel(level.dimensionType().cardinalLightType());
}
this.mainCamera.setLevel(level);
}
public Panorama getPanorama() {
return this.panorama;
}
public void registerPanoramaTextures(TextureManager textureManager) {
this.guiRenderer.registerPanoramaTextures(textureManager);
}
}引用的其他类
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
Lighting()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
NativeImage()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
CrossFrameResourcePool()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RenderSystem.getDevice(), RenderSystem.getModelViewStack(), RenderSystem.setProjectionMatrix(), RenderSystem.setShaderFog()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/构造调用 - 关联成员:
PoseStack()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CrashReport.forThrowable()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ReportedException()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
Camera()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Screenshot.takeScreenshot()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
Font.GlyphVisitor(), GlyphVisitor()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiGraphicsExtractor()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
GuiRenderer()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TextureSetup.noTexture()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiBannerResultRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiBookModelRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiEntityRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiProfilerChartRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiSignRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GuiSkinRenderer()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
GlobalSettingsUniform()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
Lightmap()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
LightmapRenderStateExtractor()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
Panorama()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
Projection()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
ProjectionMatrixBuffer()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
ScreenEffectRenderer()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
SubmitNodeStorage()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
UiLightmap()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
FeatureRenderDispatcher()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
FogRenderer()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
GameRenderState()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ColoredRectangleRenderState()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
OverlayTexture()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ARGB.color()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.cos(), Mth.lerp(), Mth.sin()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
RandomSource.create()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.getMillis(), Util.ioPool()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Profiler.get()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BlockInWorld()
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
Vec3()
- 引用位置:
-
- 引用位置:
实现
- 引用位置: