clean up material class a bit
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
This commit is contained in:
parent
7f557d40c0
commit
76e0073177
@ -1600,6 +1600,7 @@ NoiseVoxelGen work to make elevation values align with voxel values that are gen
|
||||
Non-procedural voxel generation fix
|
||||
Flower foliage item
|
||||
Texture loading from model files (ie can load texture path from model file)
|
||||
Clean up material class a bit
|
||||
|
||||
|
||||
|
||||
|
||||
@ -662,8 +662,8 @@ public class Globals {
|
||||
|
||||
//create default material
|
||||
materialDefault = new Material();
|
||||
materialDefault.set_diffuse(AssetDataStrings.TEXTURE_DEFAULT);
|
||||
materialDefault.set_specular(AssetDataStrings.TEXTURE_DEFAULT);
|
||||
materialDefault.setDiffuse(AssetDataStrings.TEXTURE_DEFAULT);
|
||||
materialDefault.setSpecular(AssetDataStrings.TEXTURE_DEFAULT);
|
||||
|
||||
//create font manager
|
||||
fontManager = new FontManager();
|
||||
|
||||
@ -389,7 +389,7 @@ public class RenderUtils {
|
||||
|
||||
//setup extra structures
|
||||
Material mat = new Material();
|
||||
mat.set_diffuse(AssetDataStrings.TEXTURE_TEAL_TRANSPARENT);
|
||||
mat.setDiffuse(AssetDataStrings.TEXTURE_TEAL_TRANSPARENT);
|
||||
sphereMesh.setMaterial(mat);
|
||||
sphereMesh.setShader(VisualShader.smartAssembleShader(false, true));
|
||||
GL40.glBindVertexArray(0);
|
||||
@ -444,7 +444,7 @@ public class RenderUtils {
|
||||
|
||||
//setup extra structures
|
||||
Material mat = new Material();
|
||||
mat.set_diffuse(AssetDataStrings.TEXTURE_TEAL_TRANSPARENT);
|
||||
mat.setDiffuse(AssetDataStrings.TEXTURE_TEAL_TRANSPARENT);
|
||||
sphereMesh.setMaterial(mat);
|
||||
sphereMesh.setShader(VisualShader.smartAssembleShader(false, true));
|
||||
GL40.glBindVertexArray(0);
|
||||
@ -531,7 +531,7 @@ public class RenderUtils {
|
||||
|
||||
//setup extra structures
|
||||
Material mat = new Material();
|
||||
mat.set_diffuse(AssetDataStrings.TEXTURE_TEAL_TRANSPARENT);
|
||||
mat.setDiffuse(AssetDataStrings.TEXTURE_TEAL_TRANSPARENT);
|
||||
sphereMesh.setMaterial(mat);
|
||||
sphereMesh.setShader(VisualShader.smartAssembleShader(false, true));
|
||||
GL40.glBindVertexArray(0);
|
||||
@ -618,7 +618,7 @@ public class RenderUtils {
|
||||
|
||||
//setup extra structures
|
||||
Material mat = new Material();
|
||||
mat.set_diffuse(AssetDataStrings.TEXTURE_BLOCK_ATLAS);
|
||||
mat.setDiffuse(AssetDataStrings.TEXTURE_BLOCK_ATLAS);
|
||||
cubeMesh.setMaterial(mat);
|
||||
cubeMesh.setShader(VisualShader.loadSpecificShader(AssetDataStrings.SHADER_BLOCK_SINGLE_VERT, AssetDataStrings.SHADER_BLOCK_SINGLE_FRAG));
|
||||
GL40.glBindVertexArray(0);
|
||||
@ -709,8 +709,8 @@ public class RenderUtils {
|
||||
|
||||
Material uiMat = new Material();
|
||||
Globals.assetManager.addTexturePathtoQueue("/Textures/Fonts/myfont1-harsher.png");
|
||||
uiMat.set_diffuse("/Textures/Fonts/myfont1-harsher.png");
|
||||
uiMat.set_specular("/Textures/Fonts/myfont1-harsher.png");
|
||||
uiMat.setDiffuse("/Textures/Fonts/myfont1-harsher.png");
|
||||
uiMat.setSpecular("/Textures/Fonts/myfont1-harsher.png");
|
||||
m.setMaterial(uiMat);
|
||||
rVal.getMaterials().add(uiMat);
|
||||
|
||||
@ -1060,8 +1060,8 @@ public class RenderUtils {
|
||||
|
||||
Material groundMat = new Material();
|
||||
Globals.assetManager.addTexturePathtoQueue("/Textures/Ground/Dirt1.png");
|
||||
groundMat.set_diffuse("/Textures/Ground/Dirt1.png");
|
||||
groundMat.set_specular("/Textures/Ground/Dirt1.png");
|
||||
groundMat.setDiffuse("/Textures/Ground/Dirt1.png");
|
||||
groundMat.setSpecular("/Textures/Ground/Dirt1.png");
|
||||
m.setMaterial(groundMat);
|
||||
|
||||
rVal.getMeshes().add(m);
|
||||
@ -1616,8 +1616,8 @@ public class RenderUtils {
|
||||
|
||||
Material groundMat = new Material();
|
||||
Globals.assetManager.addTexturePathtoQueue("/Textures/Ground/Dirt1.png");
|
||||
groundMat.set_diffuse("/Textures/Ground/Dirt1.png");
|
||||
groundMat.set_specular("/Textures/Ground/Dirt1.png");
|
||||
groundMat.setDiffuse("/Textures/Ground/Dirt1.png");
|
||||
groundMat.setSpecular("/Textures/Ground/Dirt1.png");
|
||||
m.setMaterial(groundMat);
|
||||
|
||||
rVal.getMeshes().add(m);
|
||||
|
||||
@ -118,20 +118,20 @@ public class ModelLoader {
|
||||
if(diffusePath != null){
|
||||
LoggerInterface.loggerRenderer.DEBUG(diffusePath);
|
||||
Globals.assetManager.addTexturePathtoQueue(diffusePath);
|
||||
finalMat.set_diffuse(diffusePath);
|
||||
finalMat.setDiffuse(diffusePath);
|
||||
LoggerInterface.loggerRenderer.DEBUG(diffusePath);
|
||||
} else {
|
||||
finalMat.set_diffuse(Globals.textureDiffuseDefault);
|
||||
finalMat.setDiffuse(Globals.textureDiffuseDefault);
|
||||
}
|
||||
|
||||
//set specular
|
||||
String specularPath = meshTextureData.getSpecular();
|
||||
if(specularPath != null){
|
||||
Globals.assetManager.addTexturePathtoQueue(specularPath);
|
||||
finalMat.set_specular(specularPath);
|
||||
finalMat.setSpecular(specularPath);
|
||||
LoggerInterface.loggerRenderer.DEBUG(specularPath);
|
||||
} else {
|
||||
finalMat.set_specular(Globals.textureSpecularDefault);
|
||||
finalMat.setSpecular(Globals.textureSpecularDefault);
|
||||
}
|
||||
//once we've either added default textures or actual textures,
|
||||
//set the current mesh's material to this new one
|
||||
|
||||
@ -793,8 +793,8 @@ public class FluidChunkModelGeneration {
|
||||
|
||||
|
||||
Material groundMat = new Material();
|
||||
groundMat.set_diffuse("/Textures/Ground/Dirt1.png");
|
||||
groundMat.set_specular("/Textures/Ground/Dirt1.png");
|
||||
groundMat.setDiffuse("/Textures/Ground/Dirt1.png");
|
||||
groundMat.setSpecular("/Textures/Ground/Dirt1.png");
|
||||
Globals.assetManager.addTexturePathtoQueue("/Textures/Ground/Dirt1.png");
|
||||
m.setMaterial(groundMat);
|
||||
|
||||
|
||||
@ -26,17 +26,36 @@ import java.nio.file.Path;
|
||||
*/
|
||||
public class Material {
|
||||
|
||||
|
||||
/**
|
||||
* The path of the diffuse texture when using texture lookups
|
||||
*/
|
||||
String diffuse;
|
||||
|
||||
/**
|
||||
* The path of the specular texture when using texture lookups
|
||||
*/
|
||||
String specular;
|
||||
|
||||
/**
|
||||
* Tracks whether this material has transparency or not
|
||||
*/
|
||||
boolean hasTransparency = false;
|
||||
|
||||
//Sets whether this material should get its texture pointers from the assetManager by looking up diffuse and specular paths
|
||||
//or whether it should have a manually set texturePointer and not look up while binding
|
||||
/**
|
||||
* Sets whether this material should get its texture pointers from the assetManager by looking up diffuse and specular paths
|
||||
* or whether it should have a manually set texturePointer and not look up while binding
|
||||
*/
|
||||
boolean usesFetch = true;
|
||||
|
||||
//texture pointer for the specular
|
||||
/**
|
||||
* texture pointer for the specular
|
||||
*/
|
||||
int texturePointer;
|
||||
//texture pointer for the normal
|
||||
|
||||
/**
|
||||
* texture pointer for the normal
|
||||
*/
|
||||
int normalPointer;
|
||||
|
||||
/**
|
||||
@ -60,7 +79,7 @@ public class Material {
|
||||
* @param input The input ai material
|
||||
* @return The resulting engine material
|
||||
*/
|
||||
public static Material load_material_from_aimaterial(String path, AIScene scene, AIMaterial input){
|
||||
public static Material loadMaterialFromAIMaterial(String path, AIScene scene, AIMaterial input){
|
||||
Material rVal = new Material();
|
||||
|
||||
AIString aiPathString = AIString.calloc();
|
||||
@ -101,7 +120,12 @@ public class Material {
|
||||
Globals.assetManager.addTexturePathtoQueue(rVal.diffuse);
|
||||
}
|
||||
} else {
|
||||
throw new Error("Probably got an actual texture path, haven't written code to handle this.. " + texturePath);
|
||||
String resolved = Material.resolveTexturePath(path, texturePath);
|
||||
if(resolved != null && resolved.length() > 0){
|
||||
rVal.usesFetch = true;
|
||||
rVal.diffuse = resolved;
|
||||
Globals.assetManager.addTexturePathtoQueue(rVal.diffuse);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,7 +155,7 @@ public class Material {
|
||||
}
|
||||
|
||||
if(discovered == null){
|
||||
LoggerInterface.loggerRenderer.WARNING("Failed to find texture " + filename + " for model " + path);
|
||||
LoggerInterface.loggerRenderer.WARNING("Failed to find texture \"" + filename + "\" for model " + path);
|
||||
return null;
|
||||
} else {
|
||||
Path relative = new File("./assets").toPath().relativize(discovered.toPath());
|
||||
@ -143,7 +167,7 @@ public class Material {
|
||||
* Gets the path for the diffuse of the material
|
||||
* @return The path for the diffuse texture
|
||||
*/
|
||||
public String get_diffuse(){
|
||||
public String getDiffuse(){
|
||||
return diffuse;
|
||||
}
|
||||
|
||||
@ -151,22 +175,30 @@ public class Material {
|
||||
* Gets the path for the specular of the material
|
||||
* @return The path for the specular texture
|
||||
*/
|
||||
public String get_specular(){
|
||||
public String getSpecular(){
|
||||
return specular;
|
||||
}
|
||||
public void set_diffuse(String t){
|
||||
|
||||
/**
|
||||
* Sets the diffuse texture
|
||||
* @param t The texture path
|
||||
*/
|
||||
public void setDiffuse(String t){
|
||||
diffuse = t;
|
||||
// if(t.isTransparent()){
|
||||
// hasTransparency = true;
|
||||
// }
|
||||
}
|
||||
public void set_specular(String t){
|
||||
|
||||
/**
|
||||
* Sets the specular texture path
|
||||
* @param t The specular texture path
|
||||
*/
|
||||
public void setSpecular(String t){
|
||||
specular = t;
|
||||
// if(t.isTransparent()){
|
||||
// hasTransparency = true;
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the texture pointer
|
||||
* @param pointer The texture pointer
|
||||
*/
|
||||
public void setTexturePointer(int pointer){
|
||||
texturePointer = pointer;
|
||||
usesFetch = false;
|
||||
|
||||
@ -110,7 +110,7 @@ public class Model {
|
||||
rVal.materials = new ArrayList<Material>();
|
||||
PointerBuffer material_buffer = scene.mMaterials();
|
||||
while(material_buffer.hasRemaining()){
|
||||
rVal.materials.add(Material.load_material_from_aimaterial(path,scene,AIMaterial.create(material_buffer.get())));
|
||||
rVal.materials.add(Material.loadMaterialFromAIMaterial(path,scene,AIMaterial.create(material_buffer.get())));
|
||||
}
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ public class Model {
|
||||
if(materialIndex < rVal.materials.size()){
|
||||
Material mat = rVal.materials.get(materialIndex);
|
||||
//only assign if the diffuse is actually set (ie we've actually loaded it properly)
|
||||
if(mat.get_diffuse() != null){
|
||||
if(mat.getDiffuse() != null){
|
||||
currentMesh.setMaterial(rVal.materials.get(materialIndex));
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ public class DebugBonesPipeline implements RenderPipeline {
|
||||
//
|
||||
Actor targetActor = EntityUtils.getActor(targetEntity);
|
||||
Model boneModel = Globals.assetManager.fetchModel(AssetDataStrings.UNITCYLINDER);
|
||||
boneModel.getMaterials().get(0).set_diffuse(Globals.textureDiffuseDefault);
|
||||
boneModel.getMaterials().get(0).setDiffuse(Globals.textureDiffuseDefault);
|
||||
for(Bone bone : targetActor.getBoneValues()){
|
||||
Vector3d bonePos = MathBones.getBoneWorldPosition(targetEntity, bone.boneID);
|
||||
Quaterniond boneRot = MathBones.getBoneWorldRotation(targetEntity, bone.boneID);
|
||||
|
||||
@ -87,8 +87,8 @@ public class Slider extends StandardDrawableElement implements ClickableElement,
|
||||
super();
|
||||
if(mat == null){
|
||||
mat = new Material();
|
||||
mat.set_diffuse("Textures/ui/square.png");
|
||||
mat.set_specular("Textures/ui/square.png");
|
||||
mat.setDiffuse("Textures/ui/square.png");
|
||||
mat.setSpecular("Textures/ui/square.png");
|
||||
}
|
||||
setWidth(DEFAULT_WIDTH);
|
||||
setHeight(DEFAULT_HEIGHT);
|
||||
@ -99,8 +99,8 @@ public class Slider extends StandardDrawableElement implements ClickableElement,
|
||||
super();
|
||||
if(mat == null){
|
||||
mat = new Material();
|
||||
mat.set_diffuse("Textures/ui/square.png");
|
||||
mat.set_specular("Textures/ui/square.png");
|
||||
mat.setDiffuse("Textures/ui/square.png");
|
||||
mat.setSpecular("Textures/ui/square.png");
|
||||
}
|
||||
setPositionX(positionX);
|
||||
setPositionY(positionY);
|
||||
|
||||
@ -96,13 +96,13 @@ public class ToggleInput extends StandardDrawableElement implements ClickableEle
|
||||
//material work
|
||||
if(circleMat == null){
|
||||
circleMat = new Material();
|
||||
circleMat.set_diffuse("Textures/ui/circle.png");
|
||||
circleMat.set_specular("Textures/ui/circle.png");
|
||||
circleMat.setDiffuse("Textures/ui/circle.png");
|
||||
circleMat.setSpecular("Textures/ui/circle.png");
|
||||
}
|
||||
if(barMat == null){
|
||||
barMat = new Material();
|
||||
barMat.set_diffuse("Textures/ui/square.png");
|
||||
barMat.set_specular("Textures/ui/square.png");
|
||||
barMat.setDiffuse("Textures/ui/square.png");
|
||||
barMat.setSpecular("Textures/ui/square.png");
|
||||
}
|
||||
|
||||
this.setWidth(TOGGLE_PIXEL_WIDTH_DEFAULT);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user