Browse Source

Start on organization of textures into texture sets, and implemented a basic test for alias model entities, which are now properly textured including fullbright (emissive) textures.

console
Nico de Poel 5 years ago
parent
commit
fdaee3321f
  1. 6
      Assets/Scripts/Game/Entity.cs
  2. 7
      Assets/Scripts/Modules/RenderModule.cs
  3. 1
      Assets/Scripts/Support/AliasModel.cs
  4. 12
      Assets/Scripts/Support/TextureSet.cs
  5. 11
      Assets/Scripts/Support/TextureSet.cs.meta

6
Assets/Scripts/Game/Entity.cs

@ -129,15 +129,21 @@ public class Entity
private void AssignMeshRenderer() private void AssignMeshRenderer()
{ {
Material material;
if (aliasModel.IsAnimated) if (aliasModel.IsAnimated)
{ {
visualStyle.SetupAliasModelRenderer(skinnedMeshRenderer); visualStyle.SetupAliasModelRenderer(skinnedMeshRenderer);
material = skinnedMeshRenderer.material;
skinnedMeshRenderer.enabled = true; skinnedMeshRenderer.enabled = true;
} }
else else
{ {
visualStyle.SetupAliasModelRenderer(meshRenderer); visualStyle.SetupAliasModelRenderer(meshRenderer);
material = meshRenderer.material;
meshRenderer.enabled = true; meshRenderer.enabled = true;
} }
var textures = aliasModel.Textures;
visualStyle.SetAliasModelTextures(material, textures.MainTexture, textures.FullBrightTexture);
} }
} }

7
Assets/Scripts/Modules/RenderModule.cs

@ -24,11 +24,10 @@ public partial class RenderModule
uq.GameAssets.AddAliasModel(aliasModel); uq.GameAssets.AddAliasModel(aliasModel);
// DEBUG kept for reference for the moment, how to address skins & texture frames, and full-bright textures // DEBUG kept for reference for the moment, how to address skins & texture frames, and full-bright textures
var material = new Material(Shader.Find("Universal Render Pipeline/Simple Lit"));
uint texNum = glTextures[0][0].texNum; uint texNum = glTextures[0][0].texNum;
if (uq.GameAssets.TryGetTexture(texNum, out var texture)) if (uq.GameAssets.TryGetTexture(texNum, out var texture))
{ {
material.mainTexture = texture;
aliasModel.Textures.MainTexture = texture;
} }
if (fbTextures != null && fbTextures[0] != null && fbTextures[0][0] != null) if (fbTextures != null && fbTextures[0] != null && fbTextures[0][0] != null)
@ -36,9 +35,7 @@ public partial class RenderModule
var fbTexNum = fbTextures[0][0].texNum; var fbTexNum = fbTextures[0][0].texNum;
if (uq.GameAssets.TryGetTexture(fbTexNum, out var fbTexture)) if (uq.GameAssets.TryGetTexture(fbTexNum, out var fbTexture))
{ {
material.EnableKeyword("_EMISSION");
material.SetTexture("_EmissionMap", fbTexture);
material.SetColor("_EmissionColor", Color.white);
aliasModel.Textures.FullBrightTexture = fbTexture;
} }
} }

1
Assets/Scripts/Support/AliasModel.cs

@ -15,6 +15,7 @@ public class AliasModel
public string Name => name; public string Name => name;
public bool IsAnimated => header.numPoses > 1; public bool IsAnimated => header.numPoses > 1;
public bool AutoAnimate => frameType == QAliasFrameType.Group; public bool AutoAnimate => frameType == QAliasFrameType.Group;
public TextureSet Textures { get; } = new TextureSet();
public AliasModel(string name, QAliasHeader header, QAliasFrameType frameType) public AliasModel(string name, QAliasHeader header, QAliasFrameType frameType)
{ {

12
Assets/Scripts/Support/TextureSet.cs

@ -0,0 +1,12 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextureSet
{
public Texture2D MainTexture { get; set; }
public Texture2D FullBrightTexture { get; set; }
// TODO: organize into skins, frames/groups
}

11
Assets/Scripts/Support/TextureSet.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7e2b44caf480c45459e09af660b9e378
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save