From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- .../PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h | 205 +++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h (limited to 'Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h') diff --git a/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h b/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h new file mode 100644 index 00000000..2c484faa --- /dev/null +++ b/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h @@ -0,0 +1,205 @@ +#pragma once + +#include +//#include +#include "Tile_SPU.h" +#include "Icon_SPU.h" +#include "ChunkRebuildData.h" + +class Level; +class LevelSource; +class Tile_SPU; +class RailTile_SPU; +class Material; +class TileEntity; +class ThinFenceTile; +class FenceTile_SPU; +class FenceGateTile_SPU; +class BrewingStandTile_SPU; +class CauldronTile_SPU; +class EggTile_SPU; +class TheEndPortalFrameTile; +class DiodeTile_SPU; +class FireTile_SPU; +class StemTile_SPU; +class WaterlilyTile_SPU; +class StairTile_SPU; +class CocoaTile_SPU; +class AnvilTile_SPU; +class FlowerPotTile_SPU; +class WallTile_SPU; + +class Icon; +class Minecraft; + +class TileRenderer_SPU +{ + friend class FallingTileRenderer_SPU; + private: + ChunkRebuildData* level; + Icon_SPU *fixedTexture; + bool xFlipTexture; + bool noCulling; + public : + static bool fancy; + bool setColor; + + float tileShapeX0; + float tileShapeX1; + float tileShapeY0; + float tileShapeY1; + float tileShapeZ0; + float tileShapeZ1; + bool fixedShape; + bool smoothShapeLighting; +// Minecraft *minecraft; + + void _init(); + +public: + TileRenderer_SPU( ChunkRebuildData* level ); + TileRenderer_SPU(); + Tesselator_SPU* getTesselator(); + + bool hasRenderer(Tile_SPU* tt); + void setFixedTexture( Icon_SPU *fixedTexture ); + void clearFixedTexture(); + bool hasFixedTexture(); + void setShape(float x0, float y0, float z0, float x1, float y1, float z1); + void setShape(Tile_SPU *tt); + void setFixedShape(float x0, float y0, float z0, float x1, float y1, float z1); + void clearFixedShape(); + + void tesselateInWorldFixedTexture( Tile_SPU* tile, int x, int y, int z, Icon_SPU *fixedTexture ); // 4J renamed to differentiate from tesselateInWorld + void tesselateInWorldNoCulling( Tile_SPU* tile, int x, int y, int z, int forceData = -1, + TileEntity* forceEntity = NULL ); // 4J added forceData, forceEntity param + bool tesselateInWorld( Tile_SPU* tt, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL ); // 4J added forceData, forceEntity param + + private: + bool tesselateAirPortalFrameInWorld(TheEndPortalFrameTile *tt, int x, int y, int z); + bool tesselateBedInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateBrewingStandInWorld(BrewingStandTile_SPU *tt, int x, int y, int z); + bool tesselateCauldronInWorld(CauldronTile_SPU *tt, int x, int y, int z); + bool tesselateFlowerPotInWorld(FlowerPotTile_SPU *tt, int x, int y, int z); + bool tesselateAnvilInWorld(AnvilTile_SPU *tt, int x, int y, int z); + +public: + bool tesselateAnvilInWorld(AnvilTile_SPU *tt, int x, int y, int z, int data); + +private: + bool tesselateAnvilInWorld(AnvilTile_SPU *tt, int x, int y, int z, int data, bool render); + float tesselateAnvilPiece(AnvilTile_SPU *tt, int x, int y, int z, int part, float bottom, float width, float height, float length, bool rotate, bool render, int data); + + + public: + bool tesselateTorchInWorld( Tile_SPU* tt, int x, int y, int z ); + private: + bool tesselateDiodeInWorld(DiodeTile_SPU *tt, int x, int y, int z); + void tesselateDiodeInWorld( DiodeTile_SPU* tt, int x, int y, int z, int dir ); + static const int FLIP_NONE = 0, FLIP_CW = 1, FLIP_CCW = 2, FLIP_180 = 3; + + int northFlip; + int southFlip; + int eastFlip; + int westFlip; + int upFlip; + int downFlip; + public: + void tesselatePistonBaseForceExtended( Tile_SPU* tile, int x, int y, int z, int forceData = -1 ); // 4J added data param + private: + bool tesselatePistonBaseInWorld( Tile_SPU* tt, int x, int y, int z, bool forceExtended, int forceData = -1 ); // 4J added data param + void renderPistonArmUpDown( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels ); + void renderPistonArmNorthSouth( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels ); + void renderPistonArmEastWest( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels ); + public: + void tesselatePistonArmNoCulling( Tile_SPU* tile, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param + private: + bool tesselatePistonExtensionInWorld( Tile_SPU* tt, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param + public: + bool tesselateLeverInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateTripwireSourceInWorld(Tile_SPU *tt, int x, int y, int z); + bool tesselateTripwireInWorld(Tile_SPU *tt, int x, int y, int z); + bool tesselateFireInWorld( FireTile_SPU* tt, int x, int y, int z ); + bool tesselateDustInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateRailInWorld( RailTile_SPU* tt, int x, int y, int z ); + bool tesselateLadderInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateVineInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateThinFenceInWorld( ThinFenceTile* tt, int x, int y, int z ); + bool tesselateCrossInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateStemInWorld( Tile_SPU* _tt, int x, int y, int z ); + bool tesselateRowInWorld( Tile_SPU* tt, int x, int y, int z ); + void tesselateTorch( Tile_SPU* tt, float x, float y, float z, float xxa, float zza, int data ); + void tesselateCrossTexture( Tile_SPU* tt, int data, float x, float y, float z, float scale ); + void tesselateStemTexture( Tile_SPU* tt, int data, float h, float x, float y, float z ); + bool tesselateLilypadInWorld(WaterlilyTile_SPU *tt, int x, int y, int z); + void tesselateStemDirTexture( StemTile_SPU* tt, int data, int dir, float h, float x, float y, float z ); + + void tesselateRowTexture( Tile_SPU* tt, int data, float x, float y, float z ); + bool tesselateWaterInWorld( Tile_SPU* tt, int x, int y, int z ); + private: + float getWaterHeight( int x, int y, int z, Material_SPU* m ); + public: + void renderBlock( Tile_SPU* tt, ChunkRebuildData* level, int x, int y, int z ); + void renderBlock(Tile_SPU *tt, ChunkRebuildData *level, int x, int y, int z, int data); + bool tesselateBlockInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateTreeInWorld(Tile_SPU *tt, int x, int y, int z); + bool tesselateQuartzInWorld(Tile_SPU *tt, int x, int y, int z); + bool tesselateCocoaInWorld(CocoaTile_SPU *tt, int x, int y, int z); + + private: + bool applyAmbienceOcclusion; + float ll000, llx00, ll0y0, ll00z, llX00, ll0Y0, ll00Z; + float llxyz, llxy0, llxyZ, ll0yz, ll0yZ, llXyz, llXy0; + float llXyZ, llxYz, llxY0, llxYZ, ll0Yz, llXYz, llXY0; + float ll0YZ, llXYZ, llx0z, llX0z, llx0Z, llX0Z; + // 4J - brought forward changes from 1.8.2 + int ccx00, cc00z, cc0Y0, cc00Z; + int ccxyz, ccxy0, ccxyZ, cc0yz, cc0yZ, ccXyz, ccXy0; + int ccXyZ, ccxYz, ccxY0, ccxYZ, cc0Yz, ccXYz, ccXY0; + int cc0YZ, ccXYZ, ccx0z, ccX0z, ccx0Z, ccX0Z; + int blsmooth; + int tc1, tc2, tc3, tc4; // 4J - brought forward changes from 1.8.2 + float c1r, c2r, c3r, c4r; + float c1g, c2g, c3g, c4g; + float c1b, c2b, c3b, c4b; + bool llTrans0Yz, llTransXY0, llTransxY0, llTrans0YZ; + bool llTransx0z, llTransX0Z, llTransx0Z, llTransX0z; + bool llTrans0yz, llTransXy0, llTransxy0, llTrans0yZ; + + public: + // 4J - brought forward changes from 1.8.2 + bool tesselateBlockInWorldWithAmbienceOcclusionTexLighting( Tile_SPU* tt, int pX, int pY, int pZ, float pBaseRed, + float pBaseGreen, float pBaseBlue ); + bool tesselateBlockInWorldWithAmbienceOcclusionOldLighting( Tile_SPU* tt, int pX, int pY, int pZ, float pBaseRed, + float pBaseGreen, float pBaseBlue ); + private: + int blend( int a, int b, int c, int def ); + int blend(int a, int b, int c, int d, float fa, float fb, float fc, float fd); + public: + bool tesselateBlockInWorld( Tile_SPU* tt, int x, int y, int z, float r, float g, float b ); + bool tesselateCactusInWorld( Tile_SPU* tt, int x, int y, int z ); + bool tesselateCactusInWorld( Tile_SPU* tt, int x, int y, int z, float r, float g, float b ); + bool tesselateFenceInWorld( FenceTile_SPU* tt, int x, int y, int z ); + bool tesselateWallInWorld(WallTile_SPU *tt, int x, int y, int z); + bool tesselateEggInWorld(EggTile_SPU *tt, int x, int y, int z); + bool tesselateFenceGateInWorld(FenceGateTile_SPU *tt, int x, int y, int z); + bool tesselateStairsInWorld( StairTile_SPU* tt, int x, int y, int z ); + bool tesselateDoorInWorld( Tile_SPU* tt, int x, int y, int z ); + void renderFaceUp( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex ); + void renderFaceDown( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex ); + void renderNorth( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex ); + void renderSouth( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex ); + void renderWest( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex ); + void renderEast( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex ); +// void renderCube( Tile_SPU* tile, float alpha ); +// void renderTile( Tile_SPU* tile, int data, float brightness, float fAlpha = 1.0f ); + static bool canRender( int renderShape ); + Icon_SPU *getTexture(Tile_SPU *tile, ChunkRebuildData *level, int x, int y, int z, int face); + + Icon_SPU *getTexture(Tile_SPU *tile, int face, int data); + Icon_SPU *getTexture(Tile_SPU *tile, int face); + Icon_SPU *getTexture(Tile_SPU *tile); + Icon_SPU *getTextureOrMissing(Icon_SPU *icon); + + bool isAnaglyph3d() { return false; } //GameRenderer::anaglyph3d +}; -- cgit v1.2.3